Creare un semplice script di login e registrazione utenti in php e mysql

In questo articolo vediamo come creare un semplice sistema di login con registrazione in php e mysql.

1 – Creiamo una pagina contenente il form di registrazione, ecco il codice:

<html>
<head>
<title>Registrati</title>
</head>

<body>
<form name=”registrazione” method=”POST” action=”registrati2.php”>
nome: <input type=”text” name=”nome”><br>
cognome: <input type=”text” name=”cognome”><br>
username:<input type=”text” name=”username”><br>
password:<input type=”password” name=”password”> <br>
conferma password: <input type=”password” name=”conferma”><br>
<button>registrati</button>
</form>
</body>
</html>

Con questo codice potete generare un form come quello dell’immagine in basso:

2 – Adesso create un database in mysql creando all’interno una tabella che deve contenere i dati che gli utenti inseriscono in fase di registazione. Questa tabella la potete chiamare ad esempio “utenti” e deve contenere 5 campi, tra questi:

– id di tipo intero e spuntiamo la casellina auto_increment
– gli altri li potete impostare come text (testo)

3 – Create la pagina registrati2.php, questa conterrà solo il codice php (quindi non html) e serve proprio per far funzionare il form html creato precedentemente. Il codice da inserire è il seguente:

<?php
$nomehost = “il nome o ip del vostro host “;
$nomeuser = “username di accesso al database”;
$password = “password”;
$dbname=”nome del database in cui avete creato la tabella”;
$connessione = mysql_connect($nomehost,$nomeuser,$password); //la funzione mysql_connect permette di connettersi al database utilizzando i valori contenuti nelle varianti $nomehost,$nomeuser,$password

if($connessione==0){echo”Connessione fallita”;} //se la variante $connessione è uguale a 0 mostra sul display “connessione fallita”

$database_select=mysql_select_db($dbname,$connessione); //seleziona il database

if($database_select==0){echo”Selezione non riuscita”;} // se la variante $database è uguale a 0 mostra sul display “selezione non riuscita”

$nome=($_POST[‘nome’]); // inserisce nella variante nome il nome ottenuto dal form tramite il metodo $_post

$cognome=($_POST[‘cognome’]); inserisce nella variante cognome il cognome ottenuto dal form tramite il metodo $_post

$username=($_POST[‘username’]); inserisce nella variante username l’username ottenuto dal form tramite il metodo $_post

$password=($_POST[‘password’]); inserisce nella variante password la password ottenuta dal form tramite il metodo $_post

$conferma=($_POST[‘conferma’]); inserisce nella variante conferma la password di conferma ottenuta dal form tramite il metodo $_post

if($password!=$conferma){echo”ricontrolla i campi password”;}  //se la variante $password è diversa dalla variante $conferma mostra sul display “ricontrolla i campi password”

else {

if ($nome==’ ‘ or $cognome==’ ‘ or $username==’ ‘ or $password==’ ‘){echo”tutti i campi sono obbligatori” . “<br>” . ‘<a href=”http://prova.chatgay.name/formregistrazione.php”>ritorna indietro</a>’ ;} // altrimenti se la variante $nome o $cognome o $username o $password  è unguale a 0 (ovvero che non è stato inserito nulla dall’utente tramite il form), mostra sul display che “tutti i campi sono obbligatori”

else{
$query=”Insert into `utenti` (`nome`,`cognome`,`username`,`password`) VALUES (‘$nome’,’$cognome’,’$username’,’$password’)”; // altrimenti inserisci nei campi `nome`,`cognome`,`username`,`password`contenuti nella tabella “utenti” i valori delle varianti $nome, $cognome, $username, $password, quindi tutto questo procedimento viene messo nella variante $query

$result=mysql_query($query,$connessione); // la funzione mysql_query richiama le funzioni contenute in $query,$connessione. 

if($result==0) die(“errore di registrazione”); // se la variante $result è uguale a 1 arresta lo script indicando che si tratta di un “errore di registrazione”

else

header(“location:registrato.php”); // la funzione header trasferisce gli utenti in questo caso nella pagina registrato.php
}
}
?>

4 – Adesso creiamo la pagina di login che gli utenti utilizzeranno per accedere al sito con i propri dati scelti in fase di registrazione. Ecco il codice html di esempio:

<html>
<head>
<title>Loggati</title>
</head>
<body>
<form name=”login” method=”POST” action=”login2.php”>
username: <input type=”text” name=”username”><br>
password: <input type=”password” name=”password”><br>
<button>Loggati</button>
</form>
</body>
</html>

Il risultato sarà quello riportato nell’immagine in basso:

5 – Adesso per far funzionare la pagina di login dobbiamo creare un’altra pagina contenente lo script phpche trovate di seguito:

<?php
session_start(); // avviamo la sessione
$nomehost = “localhost”;
$nomeuser = “provaphp”;
$password = “123456”;
$dbname=”provaphp”;
$myusername=($_POST[‘username’]);
$mypassword=($_POST[‘password’]);
if ($myusername==” or $mypassword==”)   {die (“compila tutti i campi bidonista di merda”);}
$connessione = mysql_connect($nomehost,$nomeuser,$password);
if($connessione==0){echo”Connessione fallita”;}
$database_select=mysql_select_db($dbname,$connessione);
if($database_select==0){echo”Selezione non riuscita”;}    
//si connette, sceglie il databse e adesso la tabella e controlla 1 x 1 tutti i valori dei campi
//se nel campo username 1 valore è uguale a $myusername e nel campo password cè un valore uguale a $mypassword allora count risulterà 1 e quindi guarda sotto:

$sql=”SELECT * FROM utenti WHERE username=’$myusername’ and password=’$mypassword'”;
$result = mysql_query($sql);
if ($result == false) {echo “cazzooo”;} else {if ($ris==true) {echo “richiesta andata a buon fine”;}}

$count=mysql_num_rows($result);
$_SESSION[‘username’] = $myusername;
// e quindi registrerà la sessione d login e a quel punto in ogni pagina in kui metteremo session_start(); risulteremo loggati fino a quando non creeremo il
// session_destroy (); k distruggerà la sessione creata e quindi il logout:
if($count==1){
session_register(“myusername”);
session_register(“mypassword”);
echo”Benvenuto $username hai effettuato il login con successo”;
}
else{
echo”login non riuscito”;
}
?>

Capendo questo script sarete in grado di fare anche altre cose, vi faccio un esempio:

<?php
session_star ();
if($username==’ ‘)
{
header(location:login.php); // se username è vuoto tramite questo script potete capire se siete loggati, infatti se la variante $username sarà uguale a 0 verrete ridirezionati alla pagina login.php, in caso contrario l’istruzione header verrebbe ignorata e quindi non verrete ridirezionati.