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?
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>
Ultima modifica di alemoppo : 25-03-2013 alle ore 23.49.22 Motivo: +tag [php]
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>
Ultima modifica di alemoppo : 25-03-2013 alle ore 23.49.49 Motivo: +tag [php]
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!
regolamento altervista_______________ regolamento forum
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?
Ultima modifica di tonysicy : 26-03-2013 alle ore 00.25.04 Motivo: Non fare post consecutivi: usa il tato "Edita" per editare i messaggi!
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 ;)
Ultima modifica di alemoppo : 26-03-2013 alle ore 14.14.39 Motivo: [cut]
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!
Ultima modifica di alemoppo : 26-03-2013 alle ore 14.21.42
regolamento altervista_______________ regolamento forum
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!
regolamento altervista_______________ regolamento forum
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!
regolamento altervista_______________ regolamento forum
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.