-
problema nel login
Ciao a tutti, vi chiedo aiuto, ho creato una pagina di registrazione ed una di login, lo scrip di registrazione funziona bene ma quando poi vado a fare il login non so perchè non mi riconosce l'utente (come se non fosse stato attivato)
<?php
session_start();
include 'connessione.php';
include 'funzioni.php';
unset($_SESSION['login']);
unset($_SESSION['psw']);
$login = trim(addslashes($_POST[login]));
$pass = trim(addslashes($_POST[psw]));
if ($login=='' or $pass==''){
echo"<form name='login' action='' method='post'>
<table>
<tr><td>Login</td><td><input type='text' name='login'></td></tr>
<tr><td>Password</td><td><input type='password' name='psw'></td></tr>
<tr><td><input type='submit' name='Accedi' value='Accedi'></td><td></td></tr></table>";}
else
{
$psw_per_db = criptpass($pass);
$verifico_user = mysql_query("SELECT *
FROM account
WHERE nick ='$login'
AND stato = '1' LIMIT 0,1");
$result = mysql_query($verifico_user);
$ok_login = mysql_num_rows($result);
if (!ok_login) {
die("Errore nella query di selezione utente $selezione: " . mysql_error()) ;
}
if($ok_login=="1")
{
$_SESSION[login] = $login;
$_SESSION[psw]= $psw_per_db;
echo "<meta http-equiv=\"Refresh\" content=\"3; URL=set.php\">Login effettuato correttamente . <a href=set.php>Clicca qui per entrare</a>";
}
else
{
echo "<meta http-equiv=\"Refresh\" content=\"10; URL=login.php\">Login incorretto o utente che non ha ancora completato il processo di registrazione. In questo caso controlla la tua email<a href=login.php>Premi qui per riprovare</a>";
}
}
?>
l'account è attivo, lo vedo sul db eppure il messaggio che dà ad ogni tentativo di login è : "Login incorretto o utente che non ha ancora completato il processo di registrazione"
sembra esserci un problema nella comunicazione con il db, qualche suggerimento?
se volete vedere la cosa con i vostri occhi ecco un sito dove ho uppato queste cose, sezione giochi
http://darkowl.altervista.org/
-
veramente a me dice
connesso con successo Login incorretto o utente che non ha ancora completato il processo di registrazione. In questo caso controlla la tua emailPremi qui per riprovare
comunque prova a levare il limit nella variabile $verifico_user
-
si, infatti è quello che dicevo io, da sempre quel messaggio, ossia il login fallisce, invece dovrebbe dire "login completato con successo", ho provato anche a togliere il limit, stesso risultato, vedete qualche errore nel codice? magari nella sintassi inerente al select?
-
io uso lo stesso sistema e nel LIMIT metto solo 1 non 0,1 , poi c'èa cneh questa riga se non erro
Codice PHP:
if (!ok_login) {
die("Errore nella query di selezione utente $selezione: " . mysql_error()) ;
}
forse dovrebbe essere
Codice PHP:
if (!$ok_login) {
die("Errore nella query di selezione utente $selezione: " . mysql_error()) ;
}
nella query '$login' è sbagliato prova con
Codice PHP:
$verifico_user = mysql_query("SELECT *
FROM account
WHERE nick ='".mysql_real_escape_string($login)."'
AND stato = '1' LIMIT 0,1");
'$login' viene letta come stringa , quindi nel db dovrebbe esistere un nickname $login , allora forse il login avrebbe successo
-
ho provato tutte queste modifiche (anche se quella del if non l'ho capita) ma il risultato è sempre lo stesso
-
Nella seconda hai messo !ok_login ( ok_login senza la $ davanti ?).
sostituisci
Codice PHP:
$verifico_user = mysql_query("SELECT *
FROM account
WHERE nick ='$login'
AND stato = '1' LIMIT 0,1");
$result = mysql_query($verifico_user);
$ok_login = mysql_num_rows($result);
con
Codice PHP:
$verifico_user = mysql_query("SELECT *
FROM account
WHERE nick ='".mysql_real_escape_string($login)."'
AND stato = '1' LIMIT 0,1");
$ok_login = mysql_num_rows($verifico_user);
dovrebbe andare
-
niente di niente... avrò passato le giornate davanti questa pagina... sempre lo stesso risultato
-
effettui la connessione la database?
nel database hai la tabella 'account' ?
se si , hai quelle determinate colonne ?
-
effettuo la connessione, ed ha successo, la tabella account esiste e ci sono quelle colonne
-
prova così , se non funziona posta il contenuto della pagina dove ci sono i dati per la connessione al database ( esclusa la password)
Codice PHP:
<?php
session_start();
include("connessione.php");
include("funzioni.php");
unset($_SESSION['login']);
unset($_SESSION['psw']);
$login = trim(addslashes($_POST['login']));
$pass = trim(addslashes($_POST['psw']));
if ($login=='' or $pass==''){
echo"<form name='login' action='' method='post'>
<table>
<tr><td>Login</td><td><input type='text' name='login'></td></tr>
<tr><td>Password</td><td><input type='password' name='psw'></td></tr>
<tr><td><input type='submit' name='Accedi' value='Accedi'></td><td></td></tr></table>";}
else
{
$psw_per_db = criptpass($pass);
$verifico_user = mysql_query("SELECT *
FROM account
WHERE nick='".mysql_real_escape_string($login)."'
AND stato='1' LIMIT 1");
if(mysql_num_rows($verifico_user)>0)
{
$_SESSION['login'] = $login;
$_SESSION['psw']= $psw_per_db;
echo "<meta http-equiv=\"Refresh\" content=\"3; URL=set.php\">Login effettuato correttamente . <a href=set.php>Clicca qui per entrare</a>";
}
else
{
echo "<meta http-equiv=\"Refresh\" content=\"10; URL=login.php\">Login incorretto o utente che non ha ancora completato il processo di registrazione. In questo caso controlla la tua email<a href=login.php>Premi qui per riprovare</a>";
}
}
?>
-
Prova così:
Codice PHP:
<?php
session_start();
include('connessione.php');
include('funzioni.php');
unset($_SESSION['login']);
unset($_SESSION['psw']);
$login = trim(addslashes(htmlspecialchars($_POST['login'])));
$pass = trim(addslashes(htmlspecialchars($_POST['psw'])));
if (!(isset($_POST['accedi'])) && (empty($login) || (empty($pass))))
{
{
echo '<form action="" method="post">';
echo '<table>';
echo '<tr><td>Login</td><td><input type="text" name="login" /></td></tr>';
echo '<tr><td>Password</td><td><input type"password" name="psw" &></td></tr>';
echo '<tr><td><input type="submit" name="accedi" value="Accedi" &></td><td></td></tr></table>';
}
else
{
$psw_per_db = criptpass($pass);
$verifico_user = mysql_query("SELECT * FROM account WHERE nick ='" . $login . "' AND stato = '1' LIMIT 0,1");
$result = mysql_query($verifico_user);
if (!$result)
{
die('Errore nella query di selezione utente ' . $selezione . ': ' . mysql_error());
}
$ok_login = mysql_num_rows($result);
if ($ok_login)
{
$_SESSION['login'] = $login;
$_SESSION['psw'] = $psw_per_db;
print 'Login effettuato correttamente. <a href="set.php">Clicca qui per entrare</a>';
}
else
{
print 'Login incorretto o utente che non ha ancora completato il processo di registrazione. In questo caso controlla la tua email. <a href="login.php">Premi qui per riprovare</a>';
}
}
?>
Ti ho pulito il codice e sistemato alcune condizioni sbagliate, come l'errore mysql, lo faceva se il login non andava. Poi ti migliorato un po il sorgente, perchè aggiungevi <meta> dove no nandavano, vanno prima </head>, non nel body.
PS: ma $selezione dove è definita?
:wink: