- Home
- Categorie
- Coding e Sistemistica
- Coding
- Login con cookies
- 
							
							
							
							
							
Login con cookiesCiao a tutti, è da qualche ora che mi stò sbattendo per capire cosà non và in questi script fatti da me. Posto i codici: FORM DI ACCESSO [php] 
 <FORM ACTION="pannello.php?funzione=login" METHOD=POST><table><tr><td width=\"105\"> <strong>E-Mail: </strong></td><td><input type=\"text\" name=\"email\" size=\"20\" MAXLENGTH=\"45\"></td></tr> <tr><td><strong>Password: </strong></td><td><input type=\"password\" name=\"password\" size=\"20\" MAXLENGTH=\"25\"></td></tr> <tr><td><br></td><td><br><input name=\"ricorda\" value=\"1\" type=\"checkbox\" >  Ricorda</td></tr></table> <br> <INPUT TYPE=SUBMIT VALUE=\"invia\"><br> <br><br>[/php]FUNZIONE DI LOGIN [php]function login(){ 
 session_start();
 include("include/connessione.php");
 if (riconosci()) {
 header("Location:pannello.php?funzione=main");
 }
 else {$email = stripslashes($_POST['email']); 
 $password = md5(stripslashes($_POST['password']));
 $risultati = mysql_query("SELECT * FROM user where email='$email' && password ='$password'");
 $rows = mysql_fetch_assoc($risultati);
 if($rows != "") {
 $idutente = $rows['id'];
 $nomeutente = $rows['nome'];
 $cognomeutente = $rows['cognome'];
 if($_POST['ricorda'] == "1") {
 setcookie("login", "OK", time() + 2592000);
 }
 $_SESSION['id_utente'] = $idutente;
 $_SESSION['nome_utente'] = $nomeutente;
 $_SESSION['cognome_utente'] = $cognomeutente;include("include/meta.php"); 
 echo "<div id="main">";
 include("tema/header.php");
 echo '<meta http-equiv="refresh" content="5;url=pannello.php?funzione=main">';$message = "<br><br>Login eseguito con successo.<br><br> 
 Tra qualche istante sarai reindirizzato alla pagina del pannello di controllo.<br><br>
 <a href="pannello.php">Clicca qui</a> se non vuoi attendere ulteriormente.<br>";
 }
 else {
 include("include/meta.php");
 echo "<div id="main">";
 include("tema/header.php");
 $message = "<br>Indirizzo email non registrato oppure hai sbagliato la password.<br><br>
 <a href="pannello.php"><b>Ritenta il login</b></a>";
 }//parte della pagina centrale dove costruisco tutto, sotto variabile $message 
 include("tema/pag_centrale.php");
 //footer finale
 include("tema/footer.php");
 }
 }[/php]PAGINA DOVE VIENI INDIRIZZATO 
 [php]
 function main(){
 session_start();
 include("include/connessione.php");
 if (riconosci()) {
 header("Location:pannello.php?funzione=main");
 }
 else {
 include("include/meta.php");
 echo "<div id="main">";
 include("tema/header.php");$nome = $_SESSION['nome_utente']; 
 $cognome = $_SESSION['cognome_utente'];
 $id = $_SESSION['id_utente'];
 $message = "<br><br>Login eseguito con successo <b>$nome $cognome</b>.<br><br>
 <br><br>
 <a href="pannello.php?funzione=logout">Logout</a><br>";//parte della pagina centrale dove costruisco tutto, sotto variabile $message 
 include("tema/pag_centrale.php");
 //footer finale
 include("tema/footer.php");
 }
 }
 [/PHP]Bene, dopo che eseguo il login sia se metto ricordami che se lo lascio vuoto, tutto và in loop! Questo fin quando non distruggo i cookie con la funzione... [php] 
 function logout(){
 session_start();
 include("include/connessione.php");
 unset($_SESSION['nome_utente']);
 unset($_SESSION['cognome_utente']);
 unset($_SESSION['id_utente']);session_unset(); session_destroy();setcookie("login", "OK", time() - 1); include("include/meta.php"); 
 echo "<div id="main">";
 include("tema/header.php");[/php]La funzione riconosci è la seguente [php]function riconosci() 
 {
 if(isset($_SESSION['nome_utente']) AND isset($_SESSION['cognome_utente']) AND isset($_SESSION['id_utente']))
 return true;
 else if($_COOKIE["login"] == "OK")
 return true;
 else
 return false;
 }[/php]Dove sbaglio? Perchè và in loop la pagina dopo il login?? 
 
- 
							
							
							
							
							Ciao Sovietiko, 
 sei sicuro vada in loop e non restituisca invece una pagina bianca a causa della configurazione del php ad esempio?
 Non vedo nulla che potrebbe mandarlo in loop.
 
- 
							
							
							
							
							
Ciao dark, si sono sicuro perchè con mozilla dà l'errore che la pagina non reindirizza in modo corretto: 
 Questa pagina non reindirizza in modo correttoFirefox ha rilevato che il server sta reindirizzando la richiesta per questa pagina in modo che non possa mai essere completata. e con IE ricarica la pagina 10 volte al secondo.. Per cui è sicuramente in loop.. Se elimino la gestione dei Cookies tutto funziona regolarmente.. Da cos'altro può dipendere se non dallo script? Grazie, ciao. 
 
- 
							
							
							
							
							Perchè fai: 
 [php]
 if (riconosci()) {
 header("Location:pannello.php?funzione=main");
 }
 [/php]
 Al massimo dovresti fare che se non è riconosciuto lo manda alla pagina di login.
 
- 
							
							
							
							
							
@Thedarkita said: Perchè fai: 
 [php]
 if (riconosci()) {
 header("Location:pannello.php?funzione=main");
 }
 [/php]
 Al massimo dovresti fare che se non è riconosciuto lo manda alla pagina di login.Ma che cavolo, mi perdo in piccole cose a volte... Infatti era quello, ho cambiato il redirect alla funzione main e tutto funziona ai comandi. Visto che sei così disponibile, come lo reputi questo tipo di log in? sicuro? script semplice? o mi conviene salvare le sessioni nel db? Grazie mille come sempre, sei un grande! 
 
- 
							
							
							
							
							Il funzionamento del cookie per il ricordami non mi sembra molto sicuro, chiunque potrebbe falsificare un cookie mettendo come valore OK. 
 Invece di mettere:
 [php]
 if (riconosci()) {
 header("Location:pannello.php?funzione=main");
 }
 else {// Mio codice 
 }
 [/php]
 Se metti:
 [php]
 if (riconosci())
 {
 header("Location: pannello.php?funzione=main");
 exit;
 }
 // Mio codice
 [/php]
 Il risultato è uguale, ma a mio avviso il codice è più leggibile.
 Le sessioni se non hai necessità particolari, le utilizzerei cosi come hai fatto.
 
- 
							
							
							
							
							
Ok grazie mille per il consiglio! A presto, ciao.