Noi scriem înregistrarea pe php și javascript - part 1 php, blog de dezvoltatori web

Formularea problemei

Domenii de umplere:

Pregătirea

Mai întâi, creați ierarhia necesară a dosarelor și fișierelor. Ar trebui să arate astfel:

Acum vom lucra exclusiv cu dosarul de înregistrare. In interior este un subdirector: șablon, care va fi toate fișierele care sunt responsabile pentru apariția modulului de înregistrare (template-uri HTML, CSS fișiere și diverse imagini). În acest dosar, creați un fișier registration.php. Acesta va conține însăși forma de înregistrare. Pe scurt, ar trebui să arate astfel:







Întregul formular este trecut prin metoda POST. care este necesară pentru transmiterea sigură a datelor. Butonul de trimitere are numele = "GO", prin care vom prinde expedierea datelor de către utilizator. Acest fișier conține și un anumit cod php. Dar mai mult despre asta mai târziu.

În directorul de înregistrare, creați fișierul root index.php. care va fi lansat la pagina de conectare. El este controlerul care se ocupă de acțiunile utilizatorului și a decide cum va arăta pagina (în acest fișier se va conecta șablon subdirector: șablon, în funcție de situații diferite). Semnificația acestei separări este detaliată într-un articol despre MVC. Acum, este de remarcat faptul că în fișierul index.php ar trebui să fie nici o ieșire, adică, codul nu ar trebui să fie o singură linie de cod html și nici un ecou operator sau de imprimare.

Toate datele despre utilizatorii înregistrați vor fi stocate în baza de date MySQL. Pentru aceasta, trebuie să creați, de exemplu, o bază de date phpMyAdmin (DB) și apoi un tabel cu câmpurile obligatorii. În acest articol, pentru un exemplu, voi folosi numele bazei de date după cum urmează: db_name. Numele tabelului sunt utilizatorii. Apoi, adăugați următoarele câmpuri în tabel:

Noi scriem înregistrarea pe php și javascript - part 1 php, blog de dezvoltatori web

Pentru confortul de a lucra în viitor, vom crea un folder lib la radacina site-ului. în care am pus 2 fișiere: connect.php și function_global.php. Mai târziu în acest dosar vor fi stocate biblioteci cu diverse funcții.

Primul fișier va trebui conectat foarte des în viitor (este responsabil pentru conectarea la baza de date), iar al doilea va stoca funcțiile frecvent utilizate pe site.







Odată ce ierarhia de tabele și fișiere este creată, puteți începe să scrieți funcționalitatea în sine.

punerea în aplicare

Codul fișierului Connect.php:

În aceste linii, vom verifica dacă un utilizator dat variabila $ _SESSION [ 'id'], $ _COOKIE [ 'conectare'] și $ _COOKIE [ 'parola']. Dacă există astfel de variabile, vom redirecționa utilizatorul către pagina principală a site-ului:

Dacă nu există astfel de date, mergem mai departe, unde verificăm dacă a fost apăsat butonul cu nume = "GO". Dacă da, verificăm datele și, dacă este în regulă, le scrieți în baza de date. În caz contrar, conectăm șablonul cu formularul:

Maxim. ruperea punk-ului doar pentru comoditate, dezvoltarea fișierelor de proiect va fi foarte mult.

Prima pagină a site-ului, la urma urmei, nu ar trebui să fie înregistrată, ci doar câteva informații

Înregistrarea nu va fi primul modul pe care utilizatorul îl vede pe principala, ci va fi primul modul scris.

"Faptul este că în fișierul include include (" template / registration.php "); există o condiție care, atunci când $ regged == true imprimă textul, că înregistrarea a avut succes și nu afișează formularul de înregistrare. "

Se pune întrebarea: Ați înțeles exact acel dosar? Pentru acest dosar nu există nici un indiciu al acestei condiții. În consecință, avem: după ce faceți clic pe butonul de înregistrare, aruncăm o pagină cu o propunere de înregistrare ...
Unul și același nume de fișier în text în diferite moduri (după cum am înțeles, nu este citit cu atenție mb) în cazul în care credeți că dvs. function_global.php dosar ierarhie, în cazul în care credeți că modul_global.php codul

în opinia mea, articolul nu este pe deplin scris, sau în grabă sau doar „marcat» 🙂 pentru logica gândit pauze și nu a terminat 🙂 Să presupunem că am introdus o variabilă, care este responsabil pentru retragerea formularului de înregistrare, și apoi ce? adică unde? 🙂 Ei bine, ne-a adus în cele din urmă că înregistrarea a avut succes și de ce? 🙂 nu este logic :)))

în funcție de validarea datelor nu funcționează codul de verificare, există deja un astfel de utilizator în baza de date. Utilizatorul este adăugat indiferent de ce

$ login = $ _POST ['login'];
$ rez = mysql_query ("SELECT * FROM utilizatori WHERE login = $ login");
dacă (@mysql_num_rows ($ rez)! = 0) returnează false;

Și dacă elimini câinele, atunci apare eroarea. nu e bine ca asta ..

Este mai corect să faceți acest lucru
$ rez = mysql_query ("SELECT id FROM utilizatori WHERE login = $ login sau mail = '$ mail" ");
dacă ($ rez mysql_num_rows ($ rez)> 0) return false;

login = $ login fix pentru login = 'login $'

Roman. acest lucru nu este în niciun caz suficient. De asemenea, trebuie să scăpați de variabila de conectare cu funcția mysql_real_escape_string.

Desigur, este necesar să filtrați orice date provenite de la utilizator, chiar și în scenariul de antrenament 🙂 Apoi vă uitați la ceea ce scriu oamenii care studiază aici exemple și sunt îngrozite)))

Dacă vorbim despre filtrare, atunci o bucată completă de cod va arăta așa
$ mail, am adăugat-o eu aici, deoarece este mai logic să verificați săpunul când vă înregistrați

Ei bine, am fost 🙂 ecranate, eliminați spațiile de la începutul și de la sfârșitul liniei și tăiați etichetele
$ login = mysql_real_escape_string (decupare (strip_tags ($ _POST ['login'])));
$ mail = mysql_real_escape_string (trim (strip_tags ($ _POST ['mail'])));
$ rez = mysql_query ("SELECT id FROM utilizatori WHERE login = '$ login' sau mail = '$ mail'");
dacă ($ rez mysql_num_rows ($ rez)> 0) return false;

Roman, mulțumesc pentru răspunsul exhaustiv pentru începător =)







Trimiteți-le prietenilor: