Aici e ahriva cu fisierele, si mai jos voi explica ce face scriptul.
prima data trebuie creeat un tabel numit users cu campurile id,username,password si email. in arhiva e si un fisier, users.sql, la care puteti sa ii dati import in mysql si creeaza tabelul
acum sa vedem ce fac fisierele
deci, primul fisier e index.php
functia asta trimite header-ele in ordinea corecta, asa am citit pe php.net
daca nu initializam sesiunea nu putem lucra cu array-ul $_SESSION
Cod: |
ysql_connect("localhost","root",""); mysql_select_db("test"); |
aici ne conectam la baza de date mysql, trebuie modificat
Cod: |
if(isset($_GET['q']) && ($_GET['q'] == "reg" || $_GET['q'] == "login" || $_GET['q'] == "logout" || $_GET['q'] == "alta_pagina")){ $page = $_GET['q']; }else{ $page = "home"; } |
cu liniile astea ne uitam ce valoare are q din adresa, si daca nu are paginile declarate de noi $page ia valoarea home, adica prima pagina
Cod: |
include $page.".php"; |
ncludem pagina ceruta
trimitem headerele in ordinea corecta, are legatura cu prima functie
reg.php - fisierul pentru inregistrare
cu primul if verificam daca user-ul e logat, iar cu al doilea daca a apasat butonul de inregistrare
$userCheck si $mailCheck sunt interogarile pt mysql sa verificam username-ul si emailul, sa nu mai fie inregistrate in baza de date
if-ul ala lung verifica sa fie datele corecte, o sa explic mai jos ce face fiecare conditie
Cod: |
empty($_POST['username']) |
aca campul username a fost lasat gol, aratam eroarea
Cod: |
mysql_num_rows($userCheck) > 0 |
rezultatul trebuie sa fie mai mic ca zero, adica username-ul nu mai exista in baza de date
Cod: |
strlen($_POST['username']) > 16 |
username-ul trebuie sa fie mai mic de 16 caractere
Cod: |
!ereg("(^[a-zA-Z0-9]+([a-zA-Z0-9\_\-]*))$",$_POST['username']) |
aici putin regex, username-ul trebuie sa inceapa numai cu o litera sau cifra, si sa contina numai litere, cifre _ si -
la fel e si la parola, ne uitam sa nu fie mai mare de 16 caractere si sa nu fie goala
Cod: |
!eregi("([0-9a-zA-Z_]|\-|\_)",$_POST['password1']) |
iar regex, parola trebuie sa aiba numai litere cifre, _ si -
Cod: |
$_POST['password1'] != $_POST['password2'] |
parola pentru confirmare trebuie sa fie identica cu prima
Cod: |
$sql = mysql_query("INSERT INTO users (username, email, password) VALUES ('".$_POST['username']."','".$_POST['email']."','".md5($_POST['password1'])."')"); |
daca datele sunt corecte, adaugam user-ul noi in baza de date cu parola criptata md5
acum sa trecem la login.php unde se face logarea
primul if verifica daca a fost apasat butonul de logare
$sql = mysql_
Cod: |
query(" SELECT * FROM `users` WHERE `username` = '".$_POST['username']."' AND `password` = '".md5($_POST['password'])."'"); |
facem un select in baza de date cu username-ul si parola introduse, iar daca rezultatul e mai mare ca zero, inseamna ca datele sunt corecte
Cod: |
$info = mysql_fetch_assoc($sql); $_SESSION['userID'] = $info['id']; $_SESSION['username'] = $_POST['username']; $_SESSION['email'] = $info['email']; $_SESSION['login'] = "1"; |
punea in array-ul $_SESSION cateva date despre user
Cod: |
header("Location: index.php"); |
daca user-ul s-a logat il trimitem la pagina principala
in alta_pagina.php si home.php e numai un if unde ne uitam daca user-ul e logat sau nu si afisam continut in functie de asta
asta e tot