Pentru orice problemă în legătură cu site-ul, trimite un mesaj privat aici.
Avatar

[Tutorial PHP]Formular de inregistrare si login in PHP

1 mesaj în acest subiect

AUTORUL SUBIECTULUI
Tutorialul:

Conectarea la baza de date

Pentru a realiza inregistrarea utilizatorilor, avem in primul rand nevoie de o baza de date MySQL cu o tabela pe care o vom denumi users. De asemenea, vom crea un fisier dbconnect.php ce va fi inclus atat pe pagina de inregistrare, cat si pe cea de login. In acest fisier vom introduce urmatorul script pentru conectarea la baza de date:

<?php
 
$server = "localhost";
$database = "test";
$username = "root";
$parola = "";
 
// conectarea la serverul MySQL
$connect = mysql_connect($server,$username,$password) or die( mysql_error() );
 
// selecteaza baza de date test
$db = mysql_select_db($database,$connect) or die( mysql_error() );
?>


Pentru acest exemplu, vom considera ca tabela users contine 4 campuri: Id (cheie primara cu atributul auto_increment), Name, Username si Password.

Dupa ce ati introdus codul de mai sus in dbconnect.php va trebui sa scrieti in index.php codul de pornire a sesiunii si sa includeti fisierul de conectare:
<?php
session_start();
require_once("dbconnect.php");
?>
<html>
<head>
<title>Inregistrare / Login</title>
</head>
</html>

ormularele HTML

Vom crea 2 fisiere: register.php si login.php. In pagina principala (index.php) vom defini doua formulare, unul de inregistrare, ce va trimite catre register.php, si unul de autentificare, ce va transmite datele catre login.php. Problema de care va trebui sa va ocupati este denumirea celor 5 input-uri (text box-uri), fiecare avand un nume specific ce va fi utilizat in fisierul .php specificat prin atributul action al tag-ului <form>.

Iata codul html pentru formularul de inregistrare:
<form name="register_form" action="register.php" method="post">
    <table width="100%" border="0" cellpadding="0" cellspacing="2">
        <tr>
            <td width="40%">Nume si prenume</td>
            <td><input type="text" name="register_name" id="register_name" /></td>
        </tr>
        <tr>
            <td>Username</td>
            <td><input type="text" name="register_username" id="register_username" /></td>
        </tr>
        <tr>
            <td>Parola</td>
            <td><input type="password" name="register_password" id="register_password" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="register_btn" value="Inregistrare" /></td>
        </tr>
    </table>
</form>


si cel pentru login:

<form name="login_form" action="login.php" method="post">
    <table width="100%" border="0" cellpadding="0" cellspacing="2">
        <tr>
            <td width="40%">Username</td>
            <td><input type="text" name="login_username" id="login_username" /></td>
        </tr>
        <tr>
            <td>Parola</td>
            <td><input type="password" name="login_password" id="login_password" /></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td><input type="submit" name="login_btn" value="Login" /></td>
        </tr>
    </table>
</form>


Formularele vor arata astfel:
Inregistrare
Nume si prenume
Username
Parola

Login / Autentificare
Username
Parola


Inregistrarea utilizatorilor



Scrie urmatorul cod in fisierul register.php. Dupa cum poti observa, acest fisier verifica daca avem date transmise, apoi preia numele, username-ul si parola utilizatorului din variabila superglobala $_POST si executa un query MySQL de tip INSERT pentru a salva datele in tabela users (Id-ul lipseste din query deoarece este incrementat automat). Ca metoda de securitate, parola este encodata utilizand functia md5():

<?php
session_start();
require_once("dbconnect.php");
 
//  verifica daca exista date transmise
if ($_POST['register_name'] != "" && $_POST['register_username'] != "" && $_POST['register_password'] != '') {
 
    // preia datele din formular
    $name = $_POST['register_name'];
    $username = $_POST['register_username'];
    $password = md5($_POST['register_password']);
 
    // formeaza si executa query-ul de inserare in baza de date
    $query = "INSERT INTO `users` (`Name`,`Username`,`Password`) VALUES ('".$name."','".$username."','".$password."')";
    $result = mysql_query($query) or die ( "Error : ". mysql_error() );
 
    // afiseaza un mesaj de succes
    if ($result) {
        echo "Inregistrarea a fost efectuata cu succes.<br>
            Click <a href='index.php'>aici</a> pentru a reveni la pagina de login";
    }
}
?>


OBS. MD5 (Message Digest Algorithm 5) este o functie criptografica de tip hash unidirectional, care livreaza ca rezultat o valoare fixa ca lungime de 128 Biti. Valuarea calculata cu ajutorul functiei MD5 (pe scurt md5sum), este folosita insa pe scara larga drept suma de control, la verificarea integritatii fisierelor. Functia md5() din PHP returneaza hash-ul ca un numar hexazecimal (in baza 16) de 32 caractere.

Autentificarea utilizatorilor

Scrie urmatorul cod in fisierul login.php. Similar formularului de inregistrare, acest fisier verifica existenta informatiilor, retine username-ul si parola in doua variabile, apoi executa un query SELECT pentru a verifica daca sunt valide.
<?php
session_start();
require_once("dbconnect.php");
 
//  verifica daca exista date transmise
if ($_POST['login_username'] != "" && $_POST['login_password'] != '') {
 
    // preia datele din formular
    $username = $_POST['login_username'];
    $password = md5($_POST['login_password']);
 
    // formeaza si executa query-ul de select din baza de date
    $query = "SELECT * FROM `users` WHERE `Username` = '".$username."' AND `Password` = '".$password."'";
    $result = mysql_query($query) or die ( "Error : ". mysql_error() );
 
    // verifica daca interogarea MySQL a gasit date valide
    if ($result || mysql_num_rows($result) < 1) {
        // daca nu, afiseaza un mesaj de eroare
        echo "Datele introduse sunt incorecte<br>
            Click <a href='index.php'>aici</a> pentru a reveni la pagina de login";
    } else {
   
        // salveaza username-ul si parola in sesiune
        $_SESSION['username'] = $username;
        $_SESSION['password'] = $password;
 
        // afiseaza un mesaj de succes       
        echo "Autentificarea a fost efectuata cu succes.";
    }
}
?>


In caz de succes, numele de utilizator si parola sunt memorate in sesiune. Acest pas este necesar deoarece permite verificarea unui utilizator utilizand datele din sesiune, fara a-i cere sa introduca de fiecare data numele de utilizator si parola. De exemplu, daca intr-o alta pagina (panou_control.php) vrem sa permitem accesul utilizatorilor la anumite functionalitati, vom scrie urmatorul cod:
<?php
session_start();
require_once("dbconnect.php");
 
//  verifica daca exista date in sesiune
if (isset($_SESSION['username']) && isset($_SESSION['password'])) {
 
    // preia datele din sesiune
    $username = $_SESSION['username'];
    $password = $_SESSION['password'];
 
    // formeaza si executa query-ul de select din baza de date
    $query = "SELECT * FROM `users` WHERE `Username` = '".$username."' AND `Password` = '".$password."'";
    $result = mysql_query($query) or die ( "Error : ". mysql_error() );
 
    // verifica daca interogarea MySQL a gasit date valide
    if ($result || mysql_num_rows($result) < 1) {
        // daca nu, afiseaza un mesaj de eroare
        echo "Acces interzis<br>
            Click <a href='index.php'>aici</a> pentru a reveni la pagina de login";
    } else {
   
        // afiseaza functiile si informatiile la care
        // utilizatorul autentificat are acces
        ...
    }
}
?>

Image




Înregistrează un cont sau loghează-te pentru a comenta

O sa poți comenta la acest subiect, imediat ce ești logat.



Înregistrează-te

Fă-ți un cont pe comunitatea noastră. E usor!


Înregistrează un nou cont

Autentifică-te

Ai un cont deja? Te poți loga aici.


Autentificare
Cine este conectat

Users browsing this forum: Momentan nu este nimeni conectat and 0 guests



Actualizare Stare
Starea ta curentă:
Raportează o nefuncționalitate

Contactează-ne

{ CONTACT_YOUR_NAME }:
{ CONTACT_YOUR_NAME_EXPLAIN }
{ CONTACT_YOUR_EMAIL }:
{ CONTACT_YOUR_EMAIL_EXPLAIN }
{ CONTACT_YOUR_EMAIL_CONFIRM }:
{ CONTACT_YOUR_EMAIL_CONFIRM_EXPLAIN }
Subject: