Ik zit met een probleem. Ik ben bezig met een website met een Users gedeeltje, beveiligt met cookies en sessions.
De sessies worden verwijdert als het venster sluit.. Daarom is er dus een cookie, die de sessie moet activeren als de site weer geopend wordt. In de MySQL wordt de cookieid en ip, userid etc.. netjes opgeslagen om daarna weer teruggehaald te worden als sessie.
Nu krijg ik de volgende error
Dit include filetje bevat de functions die ik gebruik. auth.inc.php
Er worden als het goed is denk ik geen headers verzonden op deze manier, correct me if i'm wrong?
Hieronder is het inlog script, met headers. En volgens mij zijn er ook hier geen headers verzonden voordat er de functie uit auth.inc.php is aangeroepen.
Wie zit dit anders dan mij en weet wel wat er fout is? Questions welcome
De sessies worden verwijdert als het venster sluit.. Daarom is er dus een cookie, die de sessie moet activeren als de site weer geopend wordt. In de MySQL wordt de cookieid en ip, userid etc.. netjes opgeslagen om daarna weer teruggehaald te worden als sessie.
Nu krijg ik de volgende error
code:
1
2
| [Mon Mar 11 22:02:48 2002] [error] PHP Warning: Cannot add header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mvn\mvnconfig\auth.inc.php:146) in c:\program files\apache group\apache\htdocs\mvn\mvnconfig\auth.inc.php on line 70 [Mon Mar 11 22:02:48 2002] [error] PHP Warning: Cannot add header information - headers already sent by (output started at c:\program files\apache group\apache\htdocs\mvn\mvnconfig\auth.inc.php:146) in c:\program files\apache group\apache\htdocs\mvn\mvnconfig\auth.inc.php on line 71 |
Dit include filetje bevat de functions die ik gebruik. auth.inc.php
Er worden als het goed is denk ik geen headers verzonden op deze manier, correct me if i'm wrong?
PHP:
1
| <?Function CheckLogin(){ If ($HTTP_SESSION_VARS["Login_Done"] == "1"){ return 1; } ElseIF ($HTTP_COOKIE_VARS["cookie[1]"]) { return setsessie(); } Else { return 0; }}Function setsessie(){ $Cookie_CookieID = addslashes($HTTP_COOKIE_VARS["cookie[1]"]); $Cookie_UserID = addslashes($HTTP_COOKIE_VARS["cookie[2]"]); $Query_auth = mysql_query("SELECT Geldig, Last_Accessed FROM auth WHERE CookieID = '$Cookie_CookieID' AND UserID = '$Cookie_UserID'"); If (mysql_num_rows($Query_auth) == 1){ $Query_auth_Array = mysql_fetch_array($Query_auth); $Geldig = $Query_auth_Array["Geldig"]; $Last_Accessed = $Query_auth_Array["Last_Accessed"]; $Ip_adres = $Query_auth_Array["Ip_adres"]; global $REMOTE_ADDR; $Tijd = time(); If ($Geldig == "1"){ $Tijd_Geldig = 24*60*60; } If ($Geldig == "2"){ $Tijd_Geldig = 7*24*60*60; } If ($Geldig == "3"){ $Tijd_Geldig = 4*7*24*60*60; } $Tijd_Geldig_Max = $Last_Accessed + $Tijd_Geldig; If (($Tijd_Geldig_Max > $Tijd) AND ($REMOTE_ADDR == $Ip_adres)){ $Login_Done = "1"; $Ip_Adres = $REMOTE_ADDR; $CookieID = $Cookie_CookieID; $UserID = $Cookie_UserID; session_register("Login_Done"); session_register("Ip_Adres"); session_register("CookieID"); session_register("UserID");// $HTTP_SESSION_VARS["Login_Done"] = 1;// $HTTP_SESSION_VARS["Ip_Adres"] = $REMOTE_ADDR;// $HTTP_SESSION_VARS["CookieID"] = $Cookie_CookieID;// $HTTP_SESSION_VARS["UserID"] = $Cookie_UserID; return 1; } Else { return 0; } } Else { return 0; }}Function LoginUser($username, $password, $cookie_levensduur){ $username = addslashes($username); $password = addslashes($password); $cookie_levensduur = addslashes( $cookie_levensduur); $Query_Users = mysql_query("SELECT UserID, Active FROM users WHERE UserName = '$username' AND UserPassword = '$password'"); If (mysql_num_rows($Query_Users) == 1){ $Query_Users_Array = mysql_fetch_array($Query_Users); If ($Query_Users_Array["Active"]){ global $REMOTE_ADDR; $Tijd = time(); $Cookie_inhoud[1] = RandomCookieID(); $Cookie_inhoud[2] = $Query_Users_Array["UserID"]; If ($cookie_levensduur == "01"){ setcookie ("cookie[1]", $Cookie_inhoud[1]); // regel 70 setcookie ("cookie[2]", $Cookie_inhoud[2]); // regel 71 mysql_query("INSERT INTO auth VALUES ('$Cookie_inhoud[1]', '$Cookie_inhoud[2]', '1', '$REMOTE_ADDR', '$Tijd')"); } ElseIF ($cookie_levensduur == "02"){ setcookie ("cookie[1]", $Cookie_inhoud[1]); setcookie ("cookie[2]", $Cookie_inhoud[2]); mysql_query("INSERT INTO auth VALUES ('$Cookie_inhoud[1]', '$Cookie_inhoud[2]', '2', '$REMOTE_ADDR', '$Tijd')"); } ElseIF ($cookie_levensduur == "03"){ setcookie ("cookie[1]", $Cookie_inhoud[1]); setcookie ("cookie[2]", $Cookie_inhoud[2]); mysql_query("INSERT INTO auth VALUES ('$Cookie_inhoud[1]', '$Cookie_inhoud[2]', '3', '$REMOTE_ADDR', '$Tijd')"); } $Login_Done = "1"; $Ip_Adres = $REMOTE_ADDR; $CookieID = $Cookie_inhoud[1]; $UserID = $Cookie_inhoud[2]; session_register("Login_Done"); session_register("Ip_Adres"); session_register("CookieID"); session_register("UserID");// $Login_Done = "1";// session_register("Login_Done");// session_register("REMOTE_ADDR");// session_register("Cookie_inhoud[1]");// session_register("Cookie_inhoud[2]");// $HTTP_SESSION_VARS["Login_Done"] = 1;// $HTTP_SESSION_VARS["Ip_Adres"] = $REMOTE_ADDR;// $HTTP_SESSION_VARS["CookieID"] = $Cookie_inhoud[1];// $HTTP_SESSION_VARS["UserID"] = $Cookie_inhoud[2]; return 1; } Else { return "U heeft dit Useraccount nog niet geactiveerd, wacht op uw emailtje"; } } Else { return "De Ingevoerde gegevens zijn niet bekend in de database, de user bestaat niet"; }}Function RandomCookieID(){ $pw_length = 10; $lower_ascii_bound = 50; // "2" $upper_ascii_bound = 122; // "z" // Exclude special characters and some confusing alphanumerics // o,O,0,I,1,l etc $notuse = array (58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111); while ($i < $pw_length) { mt_srand ((double)microtime() * 1000000); // random limits within ASCII table $randnum = mt_rand ($lower_ascii_bound, $upper_ascii_bound); if (!in_array ($randnum, $notuse)) { $password = $password . chr($randnum); $i++; } } return $password; }?> |
Hieronder is het inlog script, met headers. En volgens mij zijn er ook hier geen headers verzonden voordat er de functie uit auth.inc.php is aangeroepen.
PHP:
1
| <?session_start();include ("../mvnconfig/common.inc.php");include ("../mvnconfig/auth.inc.php");connecttodatabase();$Headers_geweest = 0;If (!CheckLogin()){ $Naam = addslashes($Naam); $Passwoord = addslashes($Passwoord); $Cookie_Levensduur = addslashes($Cookie_Levensduur); If ($Login){ $Message = LoginUser($Naam, $Passwoord, $Cookie_Levensduur); If ($Message == 1){ $completed = 1; } } If (!$completed){ $Headers_geweest = 1;?> <html> <head> <title>Inloggen User</title> </head> <body> <form method="POST" action="Test.php?Login=1"> <div align="center"> <center> <table border="1" width="400" cellspacing="1" bordercolorlight="#000000" height="172"> <tr> <td width="100%" colspan="2" height="19" valign="top"> <p align="center">Inloggen User</td> </tr> <tr> <td width="50%" height="19" valign="top">Username</td> <td width="50%" height="19" valign="top"><input type="text" name="Naam" size="20" value="<?php echo $Naam ?>"></td> </tr> <tr> <td width="50%" height="19" valign="top">Password</td> <td width="50%" height="19" valign="top"><input type="password" name="Passwoord" size="20" value="<?php echo $Passwoord ?>"></td> </tr> <tr> <td width="50%" height="73" rowspan="4" valign="top">Levensduur Cookie</td> <td width="50%" height="19" valign="top"> <p><input type="radio" value="0" name="Cookie_Levensduur">Geen Cookie</p> </td> </tr> <tr> <td width="50%" height="19" valign="top"><input type="radio" value="01" checked name="Cookie_Levensduur">1 dag</td> </tr> <tr> <td width="50%" height="16" valign="top"><input type="radio" value="02" name="Cookie_Levensduur">1 week</td> </tr> <tr> <td idth="50%" height="19" valign="top"><input type="radio" value="03" name="Cookie_Levensduur">1 maand</td> </tr> </table> </center> </div> <p align="center"> <input type="submit" value="Inloggen" name="Inloggen"> </form><?php echo $error; echo $Message; } }If (CheckLogin()){ If (!$Headers_geweest){?> <html> <head> <title>Overzicht Sessie's van de User</title> </head> <body><?php }?> <table border="1" width="100%" bordercolordark="#000000" cellpadding="0" bordercolorlight="#000000"> <tr> <td width="20%" align="center" valign="top">SessieID</td> <td width="20%" align="center" valign="top">User</td> <td width="20%" align="center" valign="top">Ip - adres</td> <td width="20%" align="center" valign="top">CookieCode</td> <td width="20%" align="center" valign="top">Verloopt Op</td> </tr> <tr> <td width="20%" align="left" valign="top">&nbsp;</td> <td width="20%" align="left" valign="top">&nbsp;</td> <td width="20%" align="left" valign="top">&nbsp;</td> <td width="20%" align="left" valign="top">&nbsp;</td> <td width="20%" align="left" valign="top">&nbsp;</td> </tr> </table><?php}?></body></html>?> |
Wie zit dit anders dan mij en weet wel wat er fout is? Questions welcome