- Home
- Categorie
- Coding e Sistemistica
- PHP
- Login e Sessioni
-
Login e Sessioni
Salve,
ho creato una pagina per effettuare il login e verifica di user e password nel database.Se tutto è ok, dovrei creare una sessione in maniera tale che a determinate pagine ci si può accedere solo una volta loggati.
Il blocco di codice d' interesse è il seguente:
if ( $pass == $pass_db ) {
session_start(); $_SESSION['circuito']= $user_db; $url_redirect = "members.php"; header("location: $url_redirect"); }
Perchè mi da errore sulle righe
- session_start();
( session_start() [function.session-start]: Cannot send session cookie - headers already sent by
Cannot send session cache limiter - headers already sent
)e su
- header("location: $url_redirect");
( Cannot modify header information - headers already sent by )
-
se ne è già parlato più volte... il problema è che probabilmente mandi già qualcosa in output buffer. metti questo codice prima di qualsiasi altro comando echo, ecc... oppure tricka il tutto aggiungendo ob_start(); come prima riga nel codice. dovrebbe funzionare..
in ogni caso, verifica che non ci siano spazi bianchi prima dell'inizio del codice... è un errore molto comune
-
Come... non ho capito..
In output, prima della condizione if sotto, mando eventuali errori di non corrispondenza tra username e password digitati dall' utente.
Se è tutto ok, verifico l' ultima condizione di cui sotto, ossia che la password inserita dall' utente sia uguale a quella presente nel database.
Se lo è, allora dovrebbe essere svolte le operazioni
session_start();
$_SESSION['circuito']= $user_db;$url_redirect = "members.php";
header("location: $url_redirect");Che significa ob_start(); ??
Dove lo devo mettere?
Comunque tutto il codice è questo:
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Circuito</title>
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="title" content="">
<meta name="author" content="">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="it">
<meta name="robots" content="index, follow">
<meta name="revisit-after" content="7 days">
<meta http-equiv="imagetoolbar" content="no">
<link href="style/style.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#CCCCCC">
<div align="center">
<center>
<table border="0" cellpadding="0" cellspacing="0" width="765" bgcolor="#FFFFFF" height="519">
<tr>
<td width="765" height="105" colspan="3">
</td>
</tr>
<tr>
<td width="180" height="399" valign="top" bgcolor="#FF0000" background="images/bk_sx.jpg" rowspan="2">
</td>
<td width="580" height="361" valign="top" class="tdcorpo">
<?
if ( $_GET["act"] == "" )
$_GET["act"] = "main";if ( $_GET["act"] == "main" ) { ?> <p class="titoli"><img border="0" src="images/arrow.jpg" width="6" height="12"> Login</p> <br> Inserisci il tuo Username e Password per accedere al pannello <br><br><br> <form action="login.php?act=check" method="post"> <center> <table border="0" cellpadding="0" cellspacing="0" width="53%"> <tr> <td width="100%" colspan="2" height="25" bgcolor="#CCCCCC"> <p align="center"><b><font size="2" face="Arial">Login _</font></b> </td> </tr> <tr> <td width="48%" height="35" class="tdform" bgcolor="#F0F0F0">Username:</td> <td width="52%" height="35" bgcolor="#F0F0F0"><input class="stylecampiform" type="text" name="user" size="15" maxlength="15"></td> </tr> <tr> <td width="48%" height="35" class="tdform" bgcolor="#FBFBFB">Password:</td> <td width="52%" height="35" bgcolor="#FBFBFB"><input class="stylecampiform" type="text" name="pass" size="15" maxlength="15"></td> </tr> <tr> <td width="100%" colspan="2" height="35" bgcolor="#CCCCCC"> <center> <input class="stylebottoniform" type="submit" value="Login" name="Login"> <input class="stylebottoniform" type="reset" value="Reimposta" name="Reimposta"> </center> </td> </tr> </table> </center> </form> <br> <p align="center">Hai dimenticato i tuoi dati? <a href="forget.php">Clicca qui</a> per recuperarli</p> <br><br> <p align="center">Non sei ancora iscritto? <a href="signup.php">Iscriviti subito</a> !</p> <? } if ( $_GET["act"] == "check" ) { $user = $_POST['user']; $pass = $_POST['pass']; if ( $user == "" && $pass == "" ) echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Devi inserire Username e Password per effettuare il login</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n"; else if ( $user == "" ) echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Non hai inserito il tuo Username</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n"; else if ( $pass == "" ) echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Non hai inserito la tua Password</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n"; else { include("include/connessione.php"); $result = mysql_query("SELECT username, password FROM members WHERE username='$user'"); $array_dati = mysql_fetch_row($result); $user_db = $array_dati[0]; $pass_db = $array_dati[1]; if ( $user_db != "" ) { if ( $pass == $pass_db ) { session_start(); $_SESSION['circuito']= $user_db; $url_redirect = "members.php"; header("location: $url_redirect"); } else { echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">La Password inserita non è corretta</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n"; } } else { echo "<br>\n<br>\n<p align=\"center\"><font size=\"4\" color=\"#FF0000\">Lo Username inserito non è corretto</font></p>\n<p align=\"center\"><a href=\"javascript:history.back(1)\">Torna Indietro</a></p>\n"; } } } ?> </td> <td width="5" height="399" bgcolor="#FF0000" rowspan="2"></td> </tr> <tr> <td width="580" height="38" valign="top" class="tdcorpo"> <p align="right"><a href="index.php">Home Page</a></td> </tr> <tr> <td width="765" height="15" colspan="3" bgcolor="#FF0000" class="tdfooter" background="images/bk_footer.jpg"> </td> </tr> </table>
</center>
</div></body>
</html>
-
come già detto sopra, l'istruzione session_start() deve essere la prima del codice e l'impostazion delle variabili di sessione deve avvenire senza aver fatto un output prima.
di questo argomento negli utlimi 3 giorni ne abbiamo già parlato. le sessioni vengono impostate nell'header del file. se ha un output gli header sono già chiusi e quindi non puoi più agire sulle sessioni.
per capire meglio quanto detto dai una lettura alle discussioni più recenti di questa sezione.
-
Ok grazie, credo di aver capito