Programare web

Script pentru o forma de inregistrare in PHP

Acesta e primul articol din categoria Scripturi, categorie in care veti putea gasi codul la numeroase probleme de pe web, precum modul in care poti crea o forma de inregistrare in PHP si Mysql, utilizand noile metode, prin conectarea cu mysqli -> mysql improved.

Scriptul contine cateva masuri de securitate printre care voi aminti validarea numelui si a email-ului, encriptarea parolei atunci cand se stocheaza in baza de date si nu in ultimul rand scriptul verifica daca exista deja utilizatori cu acelasi email sau username.Scriptul poate fi folosit cu incredere intr-un proiect, poate cu cateva ajustari.

Doar un lucru as vrea sa mentionez.Scriptul nu va functiona daca nu creati o baza de date test si un tabel numit members cu campurile name, email si id(optional).Pentru a fi mai usor creati o baza de date test si introduceti instructiunile SQL de mai jos.
[cc lang=”sql” line_numbers=”true”]
CREATE TABLE IF NOT EXISTS members
( id varchar(8),
name varchar(50),
email varchar(75) );
[/cc]

Si in final codul PHP…

[cc lang=”php” line_numbers=”true” nowrap=”1″]
“;
//Verificam daca emailul este valid
$regex = ‘/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/’;
// Rulam functia preg_match() utilizand ca baza de comparatie $regex si verificam $email
if (preg_match($regex, $email)) {
echo $email . ” pare a fi valid…
“;
//query
$query = mysqli_query($connect, “SELECT name, email FROM members WHERE name=’$name’ OR email=’$email'”);
$assoc = mysqli_fetch_assoc($query);
print_r($assoc);
if($assoc[‘name’] == $name || $assoc[’email’] == $email) {
echo “

Deja exista un email sau username ca cele de mai sus.

“;
} else {
$insert = mysqli_query($connect, “INSERT INTO members (name, password, email) VALUES (‘$name’, ‘$password’, ‘$email’)”);
echo “De astazi esti inregistrat!”;
}
} else {
echo $email . ” Nu pare a fi o adresa de email valida!Mai incearca o data.”;
}
} else echo “Numele nu este valid!Doar cifre si litere~!”;

} else echo “Toate campurile te rog!”;

}

?>


Utilizator:
Parola:
Email:



[/cc]

4 Comments

  1. Foarte interesant si foarte practic, bravo !
    Dar sunt nelamurit asupra unui lucru pe linia 6 ai creat obiectul $connect cu ajutorul clasei mysqli dar apoi mai jos ai folosit mysqli_query() de $connect .Eu cred ca ar fi mai bine sa te folosesti de clasa myqli si in loc de functia mysqli_query() sa folosesti $connect->query() la fel si pentru celelalte functi misqli .In acest mod obtii un script mai sigur si mai putin vulnerabil la atacuri externe

    • Chiar deloc…scriptul de mai sus e de fapt scris in stilul procedural si nu cel OOP.Poate chiar voi face in viitor un tutorial cu PDO si atunci ce ai spus tu va fi utilizat.

      • Desigur daca ai vrut sa scrii un cod in forma procedurala este corect dar
        ” $connect = new mysqli(‘localhost’, ‘root’, ”, ‘test’); ” este forma obiectuala, forma procedurala ar fi :
        “$connect = mysqli_connect(‘localhost’, ‘root’, ”, ‘test’); “

Write A Comment