Buongiorno, ho eseguito uno script registrazione e login in php da un tutorial, funziona QUASI tutto, ma quando provo a fare il login mi da il messaggio "Dati non presenti nel database" ma in realtà nel Db ci sono.
Qualcuno può aiutarmi x favore?
Printable View
Buongiorno, ho eseguito uno script registrazione e login in php da un tutorial, funziona QUASI tutto, ma quando provo a fare il login mi da il messaggio "Dati non presenti nel database" ma in realtà nel Db ci sono.
Qualcuno può aiutarmi x favore?
Visto che abbiamo la sfera di cristallo a riparate potresti iniziare con il postare il codice usato...
Questa è il codice di login
Codice PHP:<?php
include 'header.php';
?>
<div id="wrapper">
<?php
$p = $_GET['azione'];
// login.php?azione=login
if($p == "login"){
if(!isset($_POST['invia'])){ ?>
<form method="post" action="#" id="formlogin">
<label for="username">Username</label>
<input type="text" name="username" id="username" /><br>
<label for="password">Password</label>
<input type="password" name="password" id="password" /><br>
<input type="submit" name="invia" id="login" value="Accedi" />
</form>
<?php } else {
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
if($username == "" || $password == ""){
echo "Attenzione, devi compilare tutti i campi";
} else {
$password_cript = md5($password);
$recuperadati = mysql_query("SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'");
$verificadati = mysql_num_rows($recuperadati);
if($verificadati == 1){
$sessione = mysql_fetch_array($recuperadati);
$_SESSION['utente'] = $sessione['username'];
echo "Login effettuato con successo!";
header("Refresh: 2; URL= index.php");
} else {
echo "Dati non presenti nel database!";
}
}
}
// login.php?azione=logout
} elseif ($p == "logout"){
session_destroy();
echo "Logout effettuato con successo!";
header("Refresh: 2; URL= index.php");
}
?>
</div>
</body>
</html>
Questa è quella di registrazione
Codice PHP:<?php
include 'header.php';
?>
<div id="wrapper">
<?php
if(!isset($_GET['passkey'])){
if(!isset($_POST['invia'])){ ?>
<form method="post" action="#" id="formregistrazione">
<ul>
<li><label for="username">Username</label>
<input type="text" name="username" id="username" />
</li>
<li>
<label for="password1">Password</label>
<input type="password" name="password1" id="password1" />
</li>
<li>
<label for="password2">Ripeti Password</label>
<input type="password" name="password2" id="password2" />
</li>
<li>
<label for="email">Email</label>
<input type="text" name="email" id="email" />
</li>
</ul>
<input type="submit" name="invia" id="registrati" value="Registrati" />
</form>
<?php } else {
// creazione di un codice di conferma
$codiceconferma = md5(uniqid(rand()));
// Valori del form
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);
// controllo campi vuoti e password
if($username == "" || $email == ""){
echo "Devi riempire tutti i campi";
}elseif($password1 == "" || $password2 == ""){
echo "Devi riempire tutti i campi";
}elseif($password2 != $password1){
echo "Le password devono coincidere";
}else{
$recuperauseremail = mysql_query("SELECT id FROM utenti WHERE username='$username' OR email='$email'");
$contausermail = mysql_num_rows($recuperauseremail);
if($contausermail > 0){
echo "Nome utente o email già disponibili";
} else {
// Invia dati alla tb utenti_temp
$inviautentitemp = mysql_query("INSERT INTO utenti_temp (codiceconferma, username, password, email) VALUES ('$codiceconferma', '$username', '$password2', '$email')");
if($inviautentitemp){
$to=$email;
$subject="Conferma la Registrazione";
$header="Da: Amministratore";
$message="Ecco il tuo codice di attivazione \r\n";
$message.="Clicca sul link per confermare la registrazione \r\n";
$message.="http://tonysicy.it/sito/register.php?passkey=$codiceconferma";
$sentmail=mail($to,$subject,$message,$header);
}
if($sentmail){
echo "Per completare la registrazione controlla la tua casella di posta elettronica e clicca sul link di attivazione.";
}else{
echo "Errore, link di attivazione non inviato.";
}
}
}
}
} else {
$passkey = $_GET['passkey'];
$sqlrecuperauser = "SELECT * FROM utenti_temp WHERE codiceconferma = '$passkey'";
$risultatouser = mysql_query($sqlrecuperauser);
if($risultatouser) {
$contauser = mysql_num_rows($risultatouser);
if($contauser == 1){
$rows = mysql_fetch_array($risultatouser);
$username = $rows['username'];
$email = $rows['email'];
$password = $rows ['password'];
$passwordcript = md5($password);
$sqlconfermauser = mysql_query("INSERT INTO utenti (username, password, email) VALUES ('$username', '$passwordcript', '$email')");
if ($sqlconfermauser) {
echo "Il tuo account è stato attivato con successo";
$sqleliminadati = mysql_query("DELETE FROM utenti_temp WHERE codiceconferma = '$passkey'");
} else {
echo "Errore!";
}
}
}
}
?>
</div>
</body>
</html>
Quel:
Mi fa pensare che ti sei iscritto due volte con lo stesso user e password.Codice PHP:if($verificadati == 1){
Altrimenti prova a stampare la query:
(per stampare, intendo fare una echo di quella stringa, così vedi se vengono sostituite correttamente le variabili).Codice:SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'"
Ciao!
Ciao, scusa ma di php ne so proprio poco, ho provato a fare la stampa di
"SELECT * FROM utenti WHERE username = '$username' AND password = '$password_cript'"
Ma mi restituisce esattamente questa stringa
EDIT:
Ho notato che anche se cancello tutti gli account
Dal database l'autoincrement va avanti.
Può essere quello il problema?
Non è un buon punto di partenza per gestire un sito.
Strano: $username e $password_cript dovrebbero essere sostituite con i loro relativi valori...
È normale: non è quello il problema.
Ciao!
Non ne esco più
La cosa strana che a chi ha fatto il videotutorial funziona tutto.
Io ho seguito alla lettera il codice e infine ho scaricato anche lo script finito.
Il risultato è lo stesso!
Posso suggerirti un sito web dove puoi scaricare gratuitamente gli script di login e di registrazione? Eccolo: [cut] . E' di un mio amico.. Goditelo ;)
Grazie
Più che tuo amico, quello è spam perché è il tuo sito.
Tutti potremmo fare guide e linkarle nei nostri siti.
Inoltre, ho aperto 2 pagine di quel sistema login: vedo tag <center> e <font>; pagine che iniziano con <title> (quindi <html>, <head> bypassate), e poi c'é la session_start() come se sopra non ci fosse dell'html. Non apro le altre pagine.
Prova a validare quelle pagine, così riuscirai a correggerle.
A questo punto, molto meglio questa.
Ciao!
Ho provato anche quello script, funziona tutto ma non mi fa loggare, quindi presumo sia lo stesso errore.
Non è mica un problema del server che non fa restituire i dati dal database?
Hai attivato il database? In che senso non fa loggare? Quale errore appare? Quale script hai provato?
Ciao!
Ne ho provaro tanti, funzionano tutti fino al login dopo di che mi da errore di login o dati non presenti nel database ma in realtà il database è ok.
Registrazione ok
Invio emai con codice di attivazione ok
Attivazione dati ok
Quando faccio il login non va.
È strano che con script diversi il problema sia lo stesso.
Che errore ricevi nel login? Hai verificato che nel database ci siano i dati dell'account registrato?
Ciao!
i dati dell'account registrato ci sono, non mi fa effettuare il login e basta.
come se il login fosse sbagliato
Finalmente ho risolto c'era una variabile errata, per gli altri script non so ma mi va bene questo.
Grazie per l'attenzione e la pazienza prestata.