- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema con le sessioni e redirect utente loggato
-
Problema con le sessioni e redirect utente loggato
Ciao a tutti ho un problema con un area di amministrazione di un sito, ho creato la pagina con il form x il login una pagina di controllo dei dati inviati dal form che per verificare le credenziali, il login va a buon fine ma non mi fà il redirect alla pagina admin.php che è quella contenente il menu dell pannello di admin.
Codice della pagina login_admin.php
<?php session_start(); include "../config/connessione.php"; //controliamo l'invio dei dati if ((isset($_GET["login_admin.php"])) && ($_GET["login_admin.php"]== "login")){ if (!$_POST["username"] || !$_POST["password"]) { die("<p align= \"center\">Devi inserire sia username che password.</p> <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>"); } $username = $_POST["username"]; $password = sha1($_POST["password"]); //query d'estrazione dei dati di login $query = "SELECT * FROM $tabella_adm_login WHERE adm_username = '$username' AND adm_password = '$password'"; $result = mysql_query($query) or die (mysql_error()); if ($obj = mysql_fetch_object($result)) { //crea la sessione $_SESSION["valid_user"] = $_POST["username"]; $_SESSION["valid_pass"] = $_POST["password"]; $_SESSION["valid_time"] = time(); //sessione creata. vai alla pagina di gestione delle sito header("Location: admin.php"); } else { // Messaggio di errore die("<p align= \"center\">Impossibile accedere all'area riservata. Username o password errati.</p> <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>"); } } ?>
file session.php (che prottegge le pagine per la gestione del sito)
<? session_start(); //controllo delle sessioni if ((!isset($_SESSION["valid_user"]))||(!isset($_SESSION["valid_pass"]))||(!isset($_SESSION["valid_time"]))) { //redirect verso la pagina di login header("Location: index.php"); } ?>
-
Ciao gabriele1986 se non ti fa il redirect come fai a sapere che sei logato?. Ti da qualche errore?
-
Non mi da nessun errore e le credenziali di accesso sono corrette
-
E' impossibile che non ti da errore se ti se ti crea le variabili di sessione ti deve fare il redirect gia che si trova netro il IF, oppure hai disabilitato la visualisazione di errori!.
-
Gli errori sono abilitati sul server
Questo è lo script original su cui si basa lo schema del log-in
<? session_start(); @include "../config/config.php"; //controliamo l'invio dei dati if ((isset($_GET["op"])) && ($_GET["op"]== "login")){ if (!$_POST["username"] || !$_POST["password"]) { die("<p align= \"center\">Devi inserire sia username che password.</p> <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>"); } $username = $_POST["username"]; $password = sha1($_POST["password"]); //query d'estrazione dei dati di login $query = "SELECT * FROM $tabella_admin WHERE adm_username = '$username' AND adm_password = '$password'"; $result = @mysql_query($query) or die (mysql_error()); if ($obj = @mysql_fetch_object($result)) { //crea la sessione $_SESSION["valid_user"] = $_POST["username"]; $_SESSION["valid_pass"] = $_POST["password"]; $_SESSION["valid_time"] = time(); //sessione creata. vai alla pagina di gestione delle news header("Location: adm_news.php"); } else { // Messaggio di errore die("<p align= \"center\">Impossibile accedere all'area riservata. Username o password errati.</p> <p align= \"center\"><a href=\"index.php\">Riprova a loggarti</a></p>"); } } else { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Login Admin</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="stylesheet" type="text/css" href="../css/website.css"> </head> <body> <table width="500" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#000000"> <tr> <td bgcolor="#FFCC33"> <table width="100%" border="1" cellpadding="5" cellspacing="0" bordercolor="#000000"> <tr> <td width="70%"> <? echo "<form action=\"?op=login\""; ?> method="post" name="login_form""> <table width="100%" border="1" cellpadding="3" cellspacing="0" bordercolor="#000000"> <tr bgcolor="#cccccc"> <td width="15%" align="center"><h1>Login Admin</h1></td> </tr> <tr> <td align="center"> <table width="250" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="100"><h2>username:</h2></td> <td width="150"><input type="text" name="username"></td> </tr> </table></td> </tr> <tr> <td align="center"><table width="250" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="100"><h2>password:</h2></td> <td width="150"><input type="password" name="password"></td> </tr> </table></td> </tr> <tr> <td align="center"><table width="160" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="right"><input type="submit" name="submit" value="login"></td> </tr> </table></td> </tr> </table> </form></td> </tr> </table></td> </tr> </table> </body> </html> <? } ?>
è funziona senza problemi ma a me non piace perchè preferisco avere 2 file distinti uno con il for e l'altro con solo php che esegue i controlli sui dati inviati