Dai un'occhiata qui,è in inglese ma molto intuitivo!(lo script usa i cookie)
http://php.about.com/od/finishedphp1...login_code.htm
permette la registrazione degli user,login,logout,se vuoi anche le funzioni per recuperare la password devi modificare lo script di registrazione e ci metti anche il campo per l'email,di conseguenza devi modificare anche la tabella per la registrazione e devi aggiungere il campo per l'email
Poi per la password dimenticata usi questo script:
Codice PHP:
<table border="0">
<form action="<?php echo $PHP_SELF;?>" method="post">
<tr><td>Username:</td><td>
<input type="text" name="username">
</td></tr>
<tr><td>E-Mail:</td><td>
<input type="text" name="email"> </td></tr>
<tr><th colspan=2><input type="submit" name= "submit" value="Invia"></th></tr></table></form>
<a href="login.php">Torna al login!</a></div>
<?php
$username = "nome";
$password = "password";
$host = "localhost";
$database = "my_nome";
$db=mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
if (isset($_POST['submit'])) {
//nessun campo deve essere lasciato vuoto
if (!$_POST['username'] | !$_POST['email']) {
die('<div align=center><font color=red>Non hai completato tutti i campi richiesti!</font></div>');
}
$username = $_POST['username'];
$namecheck = $_POST['username'];
//controllo che il vecchio nome salvato nel db sia uguale a quello immesso
$check= mysql_query ("SELECT username FROM users WHERE username = '$namecheck'") or die(mysql_error());
$riga = mysql_fetch_assoc($check);
if ($riga['username'] != $_POST['username']) {
die('<div align=center><font color=red>L\'username non corrisponde al vecchio username!</font></div>');
}
//controllo che l'email messa via effettivamente un'email
$email=$_POST['email'];
function chkEmail($email)
{
// elimino spazi, "a capo" e altro alle estremità della stringa
$email = trim($email);
// se la stringa è vuota sicuramente non è una mail
if(!$email) {
return false;
}
// controllo che ci sia una sola @ nella stringa
$num_at = count(explode( '@', $email )) - 1;
if($num_at != 1) {
return false;
}
// controllo la presenza di ulteriori caratteri "pericolosi":
if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
return false;
}
// la stringa rispetta il formato classico di una mail?
if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
return false;
}
return true;
}
if(!chkEmail($email)) {
die('<div align=center><font color=red>Indirizzo email non valido!,controlla di averlo scritto correttamente!</font></div>');
}
$email = $_POST['email'];
$emailcheck = $_POST['email'];
//controllo che la vecchia email salvata nel db sia uguale a quella immessa
$check= mysql_query ("SELECT email FROM users WHERE email = '$emailcheck'") or die(mysql_error());
$riga = mysql_fetch_assoc($check);
if ($riga['email'] != $_POST['email']) {
die('<div align=center><font color=red>L\'email non corrisponde alla vecchia email!</font></div>');
}
//se è tutto ok,prendo la password a cui corrisponde l'email
$dati=mysql_query("select password from users where email='$email'");
while($array=mysql_fetch_array($dati)){
$password=$array[password];
}
//se è tutto ok,prendo l'username a cui corrisponde l'email
$dati2=mysql_query("select username form users where email='$email'");
while($array=mysql_fetch_array($dati2)){
$username=$array[username];
}
//effettuo il settagio dell'email
$intestazioni= "From:metti il tuo indirizzo email\r\n";
$intestazioni .= "X-Mailer: PHP/".phpversion();
mail($_POST['email'],"Password persa","La tua password: $password e il tuo username: $username", $intestazioni);
?>
<div align=center><font color=red>Password inviata!</font></div>
<?php
}
?>