Deoarece vorbim despre un site de pariuri, este normal ca interfaţa să asigure facilităţi orientate utilizator precum : posibilitatea utilizatorului de a vedea istoria pariurilor jucate până acum, de a vedea ce pariuri a propus (să nu uităm de pariurile speciale ce se pot face pe acest site!) şi ce mize au fost jucate pe respectivele pariuri. De asemenea, pentru simplitate, userul trebuie să aibă opţiunea de a pune în cont o sumă dorită şi de a paria folosind acei bani, decât să trimită bani pentru fiecare pariu.
Toate aceste lucruri duc evident la nevoie de a implementa o structură bazată pe conturi, în care un utilizator trebuie să se înregistreze pe site pentru a putea beneficia de toate aceste facilităţi. În primă fază noi am implementat cele două module esenţiale pentru acest mecanism, şi anume interfaţa de autentificare (pentru cei care au cont deja) şi interfaţa de înregistrare. Pentru acestea este nevoie de programare server-side, pentru care noi am ales limbajul PHP (PHP: HyperText Prepocessor).
Datele sunt preluate de la utilizator printr-un formular şi sunt salvate într-o bază de date. Ca sistem de gestiune a bazelor de date am ales MySQL, PHP având deja funcţii care pot interacţiona cu un astfel de server.
În principiu , realizarea acestor două formulare nu ridică probleme. Totuşi , programarea server-side are nişte restricţii despre care merită să vorbim puţin. În mod normal, un formular de înregistrare ar fi structurat astfel : o pagină în care se introduc datele, o pagină care conţine scriptul PHP ce prelucrează datele şi o pagină la care ar trebui să fie redirectat utilizatorul după ce s-a înregistrat (nu are sens să rămână pe pagina cu formularul de înscriere) .De asemenea,reamintim că protocolul HTTP se bazează pe cereri : clientul (browserul) cere o anumită pagină , de la o locaţie specificată şi serverul trimite răspunsul în format HTML. Dacă pagina conţine cod PHP, acesta va fi interpretat (de server) şi eventualul output al acestui cod va fi adăugat la conţinutul paginii ce va trimis clientului ca răspuns.
HTTP este un protocol stateless, adică nu există un context al cererilor. Ele sunt independente, nu se salvează informaţii de la o cerere la alta. De asemenea, în cadrul unei cereri nu se poate solicita decât o singură pagină. Asupra acestei proprietăţi vom mai reveni, dar momentan este important să o menţionăm.
Pagina în care se află scriptul este cerută de browser când au fost introduse datele , de obicei prin apasărea unui buton , şi tot scriptul va efectua şi redirectarea. Pentru a efectua o redirectare, serverul nu trebuie să fi trimis output HTML ca răspuns la cererea curentă. De aceea, scriptul de PHP se va afla într-o pagină separată. În cazul nostru, tot procesul de autentificare se face într-o singură pagină,ceea ce complică puţin lucrurile. Inevitabil, serverul a trimis deja o parte din output şi nu mai poate trimite altă pagină ca răspuns. Soluţia noastră a fost redirectarea folosind o tehnologie client-side, şi anume JavaScript.
O altă problemă, despre care probabil că vom mai discuta când vom vorbi despre securitatea site-ului, este cea a modului în care sunt preluate datele de către scripturile PHP. Este preluat şirul de caractere introdus de utilizator şi concatenat cu alte şiruri pentru a forma o comandă SQL (ex: introduce userul “sebaNU” in baza de date – “sebaNU” este textul introdus de utilizator). Dacă utilizatorul ştie să profite de acest lucru, prin datele introduse poate crea o comandă SQL cu efecte nedorite pentru noi
. Acest lucu poarta numele de SQL Injection şi poate fi evitat prin trecerea şirului de caractere introdus printr-un filtru care să alăture un escape character fiecărui caracter special din SQL. Noi am implementat această funcţionalitate, folosind o funcţie din PHP.
Închid aici menţionând că orice întrebare,completare sau informaţie legată de cele de mai sus este binevenită.
P.S. Am strecurat nişte surprize pentru Seba. Cine le găseşte primeşte 5000 coins la crearea contului
)






RSS - Posts