Thursday, February 4, 2016

Limbajul PHP. Sesiuni. "Guess my number" game (link aplicatie)

Enuntul urmator este dat ca tema facultativa in cadrul unui curs PHP procedural iar rezolvarea sa implica realizarea unei aplicatii tipice pentru lucrul cu sesiuni si persistenta informatiei intre apelurile unui script PHP.

" Sa se implementeze urmatorul joc folosind sesiuni: computerul alege un numar pe care utilizatorul incearca sa il ghiceasca prin incercari repetate, folosind un formular. De fiecare data cand nu a ghicit, va fi ghidat afisandu-i-se "mai aproape" sau "mai departe". Cand numarul a fost ghicit, utilizatorul este felicitat, indicandu-i-se si numarul de incercari ce au condus la reusita, iar jocul va fi resetat."

Mai intai, linkul catre aplicatie si apoi rezolvarea comentataJ

Sunt trei aspecte care trebuie solutionate:

Tuesday, February 2, 2016

Limbajul PHP. Cookies. Greseala de incepator :-) (link aplicatie)

Un server poate gazdui un numar oarecare de scripturi sau de aplicatii-site, fiecare programat, eventual, sa foloseasca mecanismul de cookies. Fiecare dintre site-urile care trimit cookies seteaza acestor cookies, in afara de nume (cheie) si valoare, alti parametri precum timpul de expirare, domeniul si calea.

Exista, desigur, scenarii in care se folosesc valorile implicite ale parametrilor optionali.
Neglijarea acestor valori implicite (sau a logicii dupa care ele sunt generate) se soldeaza, uneori, cu consecinte neplacute.

Spre exemplu, fie enuntul urmator, dat ca tema in cadrul unui curs de PHP procedural:

" Se concepe un formular HTML in care utilizatorul alege dintr-un drop-down list site-ul catre care doreste sa mearga. Dupa expedierea formularului, utilizatorul va fi redirectionat catre site-ul ales. 
1) Adaugire: se va include un checkbox "Remember my decision". Odata ce utilizatorul a ales un site, a bifat checkbox-ul si a expediat formularul (fiind redirectionat catre site-ul ales), la fiecare vizita ulterioara el va fi automat redirectionat catre site-ul ales initial. 
2) Adaugire: odata ales site-ul default, la vizitele ulterioare, pagina va contine un buton "Reset my website preference". Apasarea acestui buton duce la anularea site-ului default - la urmatoarea vizita, utilizatorului i se va prezenta din nou pagina de selectie de site".

Primele doua cerinte nu comporta probleme: se folosesc formularele HTML corespunzatoare, functia header(), functia setcookies(). "Surprizele"pot sa apara la ultimul punct.

Presupunem ca formularul html este gazduit pe prima pagina a unui site, sa-i spunem site-ul A, iar selectia din drop-down list redirecteaza utilizatorul catre site-urile B, C, D…. Pentru simplitate, vom limita momentan drop-down list la un singur site, B, care poate fi bifat sau nu ca favorit, in vederea redirectarii automate.

Site-ul A se afla intr-un folder oarecare pe masina locala, sa-i spunem "practice1", iar site-ul B se afla intr-un subfolder al lui practice1, sa-i spunem "targets". Aceasta configuratie este importanta si vom vedea imediat de ce.