-
aiuto form log in
Ciao a tutti, sto provando a creare un form per il login degli utenti sfruttando il database fornito da altervista.
per ora sono riuscito a scrivere questo:
Codice PHP:
$db_host="miohost";
$db_user="miouser";
$db_pass="miapassword";
$db_name="dbname";
$db= mysql_connect($db_host,$db_user , $db_pass ) or die ("errore connessione");
mysql_select_db($db_name, $db) or die ("errore selezione database");
$user=mysql_real_escape_string($_POST[email]);
$pass=mysql_real_escape_string($_POST[pw]);
if($_GET[log]=='ok'){
$sql="SELECT * FROM utenti WHERE nome = '$user'";
$query1=mysql_query($sql);
$num=mysql_fetch_object($sql);
$array1=mysql_fetch_array($sql) ;
if ($num !== ""){ //se esiste una email nel database...
if($array1[password]== md5($pass)){ //se la password è corretta
if ($array1[attivo]==1){ // Se l'utente è autenticato...
$_SESSION[autorizzato]=1;
header("location: riservata.php");
}else{
$risp="account non autorizzato";
}
}else{
$risp="password errata";
}
}else{
$risp= "email non valida";
}
echo "<center><h2>".$risp."</h2></center>".$array1[nome];
}
quando vado a provarlo, lo script mi da sempre "email non valida", non riesce a superare la prima condizione(anche se io metto dei dati esatti) quindi penso sia un problema di connessione al database.... qualcuno può illuminarmi?
-
Nella query SELECT ti conviene definire il campo della password e poi per il login ti consiglio di utilizzare un ciclo while per il fetch_array
-
L'errore penso che sia questo:
Codice PHP:
if ($num !== ""){
Comunque modifica tutto il codice in questo modo e vedi se ti funziona.
Codice PHP:
$db_host="localhost";
$db_user="user";
$db_pass="";
$db_name="my_user";
$db= mysql_connect($db_host,$db_user , $db_pass ) or die ("errore connessione");
mysql_select_db($db_name, $db) or die ("errore selezione database");
$user=mysql_real_escape_string($_POST['email']);
$pass=mysql_real_escape_string($_POST['pw']);
if($_GET[log]=='ok'){
$sql="SELECT * FROM utenti WHERE nome = '$user'";
$query1=mysql_query($sql);
$num=mysql_fetch_object($sql);
$array1=mysql_fetch_array($sql) ;
if ($num != ""){ //se esiste una email nel database...
if($array1['password']== md5($pass)){ //se la password è corretta
if ($array1['attivo']==1){ // Se l'utente è autenticato...
$_SESSION['autorizzato']=1;
header("location: riservata.php");
}else{
$risp="account non autorizzato";
}
}else{
$risp="password errata";
}
}else{
$risp= "email non valida";
}
echo "<center><h2>".$risp."</h2></center>".$array1['nome'];
}
Ciao!
-
niente da fare.... ho provato sia a inserire il controllo password direttamente nella query che a modificare l'uguaglianza della condizione...... ma nulla, continua a ignorarmi le query, come se non riuscisse a prelevare i dati dal database...
qualche idea?
-
Un'idea ce l'ho: mysql_query().
Vedi qual è l'errore. :wink:
Ciao!
-
allora i risultati delle prove:
ho fatto prima
Codice PHP:
mysql_query($sql) or die(mysql_error());
nessun errore....
Codice PHP:
mysql_fetch_array($sql) or die(mysql_error());
quando ho provato con questo... praticamente tutto quello che c'è nella pagina sotto il form in questione è scomparso o.O
a questo punto non so che dire...
-
Prova in questo modo e dammi il risultato.
Codice PHP:
$db_host="localhost";
$db_user="user";
$db_pass="";
$db_name="my_user";
$db= mysql_connect($db_host,$db_user , $db_pass ) or die ("Errore 1: ".mysql_error());
mysql_select_db($db_name, $db) or die ("Errore 2: ".mysql_error());
$user=mysql_real_escape_string($_POST['email']);
$pass=mysql_real_escape_string($_POST['pw']);
if($_GET[log]=='ok'){
$sql="SELECT * FROM utenti WHERE nome = '$user'";
$query1=mysql_query($sql) or die("Errore 3: ".mysql_error());
$num=mysql_fetch_object($sql) or die("Errore 4: ".mysql_error());
$array1=mysql_fetch_array($sql) or die("Errore 5: ".mysql_error());
if ($num != NULL){ //se esiste una email nel database...
if($array1['password']== md5($pass)){ //se la password è corretta
if ($array1['attivo']==1){ // Se l'utente è autenticato...
$_SESSION['autorizzato']=1;
header("location: riservata.php");
}else{
$risp="account non autorizzato";
}
}else{
$risp="password errata";
}
}else{
$risp= "email non valida";
}
echo "<center><h2>".$risp."</h2></center>".$array1['nome'];
}
Buone feste!
-
ho risolto.... c'era un problema con la criptazione della password e il database.... grazie per l'aiuto :)