Problem mit Browserkompatibilität und Sessions
-
Dann poste mal etwas Code
-
index.php:
<?php session_start(); ?> <?php echo "<?xml version=\"1.0\" encoding=\"iso-8859\" ?>"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Willkommen auf Daniel-Kalthoff.de </title> <link name="stil" type="text/css" rel="stylesheet" href="Style/style.css" /> <script language="JavaScript" type="text/javascript" charset="iso-8859"> </script> </head> <body class="body"> <?php $Name="index.html"; include "navi.inc"; echo $HTTP_SESSION_VARS["User"]; if(isset($HTTP_SESSION_VARS['User'])) { include "loggedin.inc"; } else { include "unlogged.inc"; } ?> </body> </html>
unlogged.inc und loggedin.inc enthalten ausschließlich HTML-Code.
navi.inc
<div id="menu"> <center id="bigga">Login:</center><br/><br/> <form name="login" action="login.php" method="post"> <table> <tr><td id="forinput">Name:</td><td><input name="Name" size="25" /></td></tr> <tr><td id="forinput">Password: </td><td><input type="password" name="PW" size="25" /></td></tr> </table><br /><br /><br /> <center><img src="pics/submit.jpg" onclick="document.login.submit()" alt="einloggen" /></center> </form><br /> <center id="bigga">Registrieren:</center><br /><br /> <form name="regist" action="register.php" method="post"> <table> <tr><td id="forinput">Name:</td><td><input name="Name" size="25" /></td></tr> <tr><td id="forinput">Password:</td><td><input name="PW" size="25" type="password" /></td></tr> <tr><td id="forinput">Password wiederh.</td><td><input name="PWa" size="25" type="password" /></td></tr> <tr><td id="forinput">E-mail:</td><td><input name="mail" size="25" /></td></tr> <tr><td id="forinput">E-mail wierderh.</td><td><input name="maila" size="25" /></td></tr> </table><br /> <center><img src="pics\register.jpg" onclick="regist.submit()" alt="anmelden" /></center> </form> </div>
login.php:
<?php session_start(); ?> <?php echo "<?xml version=\"1.0\" encoding=\"iso-8859\" ?>"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Login Bereich </title> <link rel="stylesheet" href="style/style.css" /> </head> <body> <form name="form" action="index.php" method="post"> <P id="forinput"> <?PHP $_POST["Name"] = htmlentities($_POST["Name"]); $_POST["PW"] = htmlentities($_POST["PW"]); $db = mysql_connect("localhost", "root", ""); if($db) { if($_POST["Name"] and $_POST["PW"]) { mysql_select_db("member"); $data = mysql_query("SELECT * FROM member WHERE Name='".$_POST["Name"]."'"); if($data == "") { echo "Ihr Benutzname stimmt nicht!<br />"; echo "<img src=\"pics/back.jpg\" onclick=\"form.submit()\" />"; } else { $row = mysql_fetch_object($data); if($row->PW == $_POST["PW"]) { echo "Sie haben sich eingeloggt!<br />"; echo "<img src=\"pics/back.jpg\" onclick=\"form.submit()\" />"; $HTTP_SESSION_VARS['User'] = $_POST["Name"]; } else { echo "Sie haben das falsche Password eingegeben!<br />"; echo "<img src=\"pics/back.jpg\" onclick=\"form.submit()\" />"; } } } else { echo "Bitte geben Sie sowohl einen Namen als auch ein Password an!<br />"; echo "<img src=\"pics/back.jpg\" onclick=\"form.submit()\" />"; } mysql_close($db); } else { echo "Die Datenbank lässt sich nicht öffnen!<br />"; echo "<img src=\"pics/back.jpg\" onclick=\"form.submit()\" />"; } ?> </p> </form> </body> </html>
sodele das wars *ggg*
mfg
Glamdring
-
die inc Dateien, die nur HTML enthalten hättest du auch weglassen können (hab sie jetzt der Übersicht halber gelöscht)
Wenn du PHP >= 4.1.0 hast kannst du ruhig anstelle von $HTTP_SESSION_VARS wieder $_SESSION verwenden. Kommt er denn beim login in den "Sie haben sich eingeloggt!"-Zweig? Du könntest dir zuallererst mal mit echo session_id(); auf jeder Seite die Session-ID ausgeben lassen, die muss auf jeden Fall mal überall gleich lauten. Wenn sie das nicht tut hast du wohl auf irgend einer Zwischenseite der session_start() Aufruf vergessen
-
ist exakt die Selbe Session_id
mfg
Glamdring
-
Aber am Ende von login.php ist $_SESSION['User'] gesetzt
-
Nee, das ist ja genau das Problem, liegts vielleicht daran, dass ich ich $_SESSION["User"]; geschrieben habe (ich kanns mir net vorstellen).
mfg
Glamdring
-
Das ist eigentlich egal. Also ist die Variable jetzt nichtmal im login-Script selbst gesetzt, obwohl er in den if($row->PW == $_POST["PW"])-Block kommt
-
Es ergibt zwar keinen Sinn, aber in login ist die Variable gesetzt, aber, trotz der selben Session_id nicht in index.php
mfg und kanitfastan
Glamdring
-
Setze mal´noch ein paar andere Session-Variablen und mach dann auf der Folgeseite ein var_dump($_SESSION);
-
flenders schrieb:
var_dump($_SESSION);
???
mfg
Glamdring
-
Wo ist dein Problem? Ruf doch einfach nach deinem session_start() das mal auf und sag, was es ausgibt
-
Dann sagt er:
array(0) { }thx
Glamdring
-
Wenn er $_SESSION nicht kennt, hast du ne alte PHP Version.
da verwendet man IIRC session_register
siehe Doku
-
Er sagte doch, dass er PHP 4.3.2 hat. Allerdings scheinen dann die Session-Informationen nicht richtig gespeichert zu werden, wenn zwar die Session-ID, nicht jedoch die Session-Vars erhalten bleiben
-
Meint ihr ich sollte mir mal die neueste PHP-Version herunterladen, oder bringt das nichts???
mfg
-
Bekommst du evtl. Fehlermeldungen in dem Log-File von PHP?
-
Wo liegt die Datei? Hab sowas noch nie gebraucht, deshalb weis ichs net
mfg
-
standardmäßig heisst die datei php_error.log
Kann man allerdings in der php.ini umstellen
-
Ich hab sowohl den PHP- als auch den Apache-Ordner durchsucht und a ist keine derartige Datei, aber, weil ich keine Ahnung von der php.ini hab hab ich da sicher nichts dran verstellt.
mfg
-
Die php.ini liegt entweder im PHP- oder Windows-Verzeichnis.
Wenn du an der noch nichts verändert hast, ist vielleicht der Temp-Pfad, in dem die Sessiondateien gespeichert werden, nicht richtig eingestellt.