-
Errore pagina di Login
Ho un problema con il login.Non mi trova l'utente nonostante nella tabella c'è.
Codice PHP:
<?
session_start();
mysql_connect(localhost,scolopedia,****);
mysql_select_db("my_scolopedia") or Die ("Connessione al database fallita");
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POSt['password']);
$dati= "SELECT id FROM profilo WHERE username='$username' AND password='$password'";
$esi=mysql_query($dati);
if ($row=mysql_fetch_array($esi))
{
$_SESSION['id']=$row['id'];
header("Location: paginaprofilo.php");
}
else
{
header("Location: loginfallito.php");
}
?>
Il codice è questo, crea la connessione, cerca nella tabella l'id che corrisponde a username e password inseriti e se esiste memorizza l'id con le sessioni e manda verso un'altra pagina, altrimenti ti manda verso loginfallito.php... ma nonostante il username e password associati all'id 1 esistano, mi manda comunque su loginfallito.php. Forse ho sbagliato qualcosa nelle parentesi dell'IF?
-
Controlla se $esi è === FALSE. In caso positivo (se è false), stampa l'errore sql (mysql_error()).
Inoltre, occhio a:
Codice PHP:
$_POSt['password']
Ciao!
-
ho cambiato così:
Codice PHP:
<?
session_start();
mysql_connect(localhost,scolopedia,rinmomapne50);
mysql_select_db("my_scolopedia") or Die ("Connessione al database fallita");
$username=mysql_real_escape_string($_POST['username']);
$password=mysql_real_escape_string($_POST['password']);
$dati= "SELECT id FROM profilo WHERE username='$username' AND password='$password'";
$esi=mysql_query($dati);
if ($esi===false){
echo(mysql_error());
}
else
{$row=mysql_fetch_array($esi))
$_SESSION['id']=$row['id'];
header("Location: paginaprofilo.php");
}
?>
Ma mi dice che c'è un errore in riga 15 (quella con la sessione): syntax error, unexpected T_VARIABLE
-
Codice PHP:
$row=mysql_fetch_array($esi))
Manca il ";" e hai chiuso una parentesi in più.
Ciao!
-
-
No aspetta, il problema non è risolto... adesso anche se il profilo non esiste invece di stamparmi l'errore mi manda lo stesso sulla nuova pagina! Cavolo!
-
beh, certo: per vedere quante "righe" trova, dovresti usare la mysql_num_rows(). p.s: se stai imparando a usare mysql, ti consiglio di non imparare le funzioni "mysql_", ma di usare mysqli.
Ciao!
-
Non ho capito bene il sistema che mi stai indicando...
Allroa: io gli faccio eseguire la wuery con SELECT e mi trova tutti gli ID in cui password e username corrispondono, poi con mysql_num_rows() vedo quante righe ci sono e se mi dà 0 lo mando sul login fallito e se mi fa 1 lo mando sul login riuscito?
Ah, grazie del consiglio..che vantaggi comporta mysqli?
-
Beh, mysqli è una libreria "nuova", mentre "mysql_" sarà ben presto considerato deprecato.
p.s: va bene utilizzare anche PDO.
Per altri approfondimenti vedi qui.
Ciao!