SAlve ragazzi,
ecco il quesito. Quando un utente perde la password ho pensato di mandargli via mail una password temporanea che sostituisca, nella tabella ove vengono immagazzinati i dati di registrazione degli utenti, quella usata dall'utente in oggetto in fase di prima registrazione. lo script che uso è questo:
Codice PHP:
<?php
if(!isset($_POST['submit']))
{
header("Location: [url]http://www.listafacile.com[/url]");
die;
exit;
}
//varie info per email
$oggi = date("j F Y G:i");
$sito = "http://www.listafacile.com";
$ip = "$_SERVER[REMOTE_ADDR]";
$browser = "$_SERVER[HTTP_USER_AGENT]";
$soggetto = "Modulo da $sito";
$mail = htmlentities(strip_tags($_POST['mail']));
if(trim($_POST['mail']) == "")
{
print "La mail è obbligatoria
<a href=\"formregistraz.php\">indietro</a>
";
}
else
{
include("config.php");
mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
$sql = "SELECT * FROM utenti WHERE mail = '$mail'";
$result = mysql_query ($sql) or die (mysql_error());
$n = mysql_num_rows($result);
if ($n != 0)
{
echo "L'email inserita è corretta
";
}
else
{
header('Refresh: 0; URL=' .'lostpsw.php'); }
// Imposto la lunghezza della password a 10 caratteri
$lung_pass = 10;
// Creo un ciclo for che si ripete per il valore di $lung_pass
for ($x=1; $x<=$lung_pass; $x++)
{
// Se $x è multiplo di 2...
if ($x % 2){
// Aggiungo una lettera casuale usando chr() in combinazione
// con rand() che genera un valore numerico compreso tra 97
// e 122, numeri che corrispondono alle lettere dell'alfabeto
// nella tabella dei caratteri ASCII
$mypass = $mypass . chr(rand(97,122));
// Se $x non è multiplo di 2...
}else{
// Aggiungo alla password un numero compreso tra 0 e 9
$mypass = $mypass . rand(0,9);
}
}
//imposto la seconda query che aggiorna il database con la password temporanea
include("config.php");
mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
mysql_query("UPDATE utenti SET password = '".$mypass."', confermapassword = MD5('".$mypass."') WHERE mail = '".$mail."'") or die(mysql_error());
// settare qui quello che apparirà nel campo from della email
$from_mail = "info@iso-consulenze.info";
// invio della mail contenente la passwd e gli altri dati
$To="$mail";
$Headers ="From: $from_mail";
$Soggetto="[[url]www.iso-consulenze.info[/url]] I tuoi dati di accesso";
$Corpo.="Ciao!\n\n";
$Corpo.=" Sono il programma Sendmail di [url]http://www.iso-consulenze.info[/url]";
$Corpo.=" Questa è la tua nuova password temporanea: $mypass\n\n";
$Corpo.=" A presto!\n\n";
$Corpo.="--------------------------------------------\n";
$Corpo.="$from_mail\n";
$Corpo.="http://www.iso-consulenze.info\n";
$Corpo.="--------------------------------------------\n";
mail($To, $Soggetto, $Corpo, $Headers);
echo "ti è stata inviata una mail all'indirizzo $mail con i tuoi dati";
}
mysql_close();
?>
Ora, che succede? Lo script sembra funzionare, perchè la password, all'interno della tabella, viene sostituita con 1 da 10 temporanea generata in random. Ma poi quando vado a fare il login, ecco che mi dice che l'utente non è stato riconosciuto. Perchè?
ecco il file di controllo sul form del login
Codice PHP:
<?
session_start();
if (isset($_POST['username']) && isset($_POST['password'])) {
include("config.php");
mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("errore nella connessione");
mysql_select_db("$db_name") or die ("errore nella selezione del database");
$hpw=md5($_POST['password']);
$result=mysql_query("select * from utenti where username='$_POST[username]' and password='$hpw'");
if (mysql_num_rows($result)!=0) {
$_SESSION['username']=true;
$valori = @mysql_fetch_assoc($result); //metti i valori del db in un array associativo
//passa i valori come parametro richiamando la pagina
$_SESSION['nome'] = $valori['nome'];
$_SESSION['cognome'] = $valori['cognome'];
$_SESSION['utente_id'] = $valori['utente_id'];
header('location: carrello.php?id='.$valori['utente_id'].'');
} else
echo "Utente non riconosciuto";
}
mysql_close();
?>
potreste spiegarmi dove può stare il problema?