- Home
- Categorie
- Coding e Sistemistica
- PHP
- Login con cookies
-
Login con cookies
Ciao 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.