PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Session


roemario
20.01.2005, 10:47:22
Hallo Zusammen,

ich habe ein "Browserabhängiges" Problem mit meinem Login-Script. Folgendes mir unerklärliches passiert:

- ich logge mich im Internet mit Firefox ein - Resultat: login geht, Session bleibt erhalten, kann alles machen

- ich logge mich im Internet mit dem IE 6 ein - Resultat: login geht, Session bleibt nicht erhalten, sobald ich eine weiterführende Seite öffnen will, werde ich ausgeloggt

- ich logge mich lokal auf meinem Rechner mit dem IE 6 ein - Resultat: login geht, Session bleibt erhalten, kann alles machen

????

ich bin den Code jetzt schon einige male durchgegangen und finde einfach keinen Fehler und keine Erklärung dafür, zumal es schon funktiniert hat...

deshalb Poste ich hier mal meinen Code:


-----------login.php-------------

<?php
error_reporting(E_ALL);
session_start();
require("../connect/connect.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3D//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>LogIn zum Verwaltungsbereich</title>
<link href="../style/style.css" rel="stylesheet" type="text/css">

</head>
<body class=sites>
<?php if(!isset($_POST['submit'])) { ?>
<form action="<?php $PHP_SELF ?>" method="post">
<table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center" class=sites>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<b>Bitte erst anmelden</b>
</td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Benutzername</td>
<td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"></td>
</tr>
<tr>
<td width="170" bgcolor="#e7e7e7">Passwort</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
</tr>
<tr>
<td bgcolor="#e7e7e7" align="center" colspan="2">
<input type="submit" name="submit" value="Anmelden" class="button">
</td>
</tr>
</table>
</form>
<?php
}elseif(!$_POST['username'] || $_POST['username'] == ""){
echo '<p align="center">Einen Benutzername brauchen wir schon ;-)<br><br><a href="login.php">Zurück</a></p>';
}elseif(!$_POST['password'] || $_POST['password'] == ""){
echo '<form action="login.php" method="post">';
echo '<p align="center"> Ein Passwort brauchen wir schon ;-) <br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zurück">';
echo '</p>';
echo '</form>';
}else{
$password=md5($password);
$query=@mysql_query("SELECT user, pass FROM admin_mitglieder WHERE user='".$_POST['username']."'")
or die('Select ist fehlgeschlagen!');
$result=@mysql_fetch_array($query)
or die ('<p align="center">Sorry, aber dieser Benutzername existiert nicht!<br><a href="login.php">Zurück</a></p>');
if($password != $result['pass']){
echo '<form action="login.php" mehtod="post">';
echo '<p align="center">Sorry, aber dieses Passwort ist falsch!<br><br>';
echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
echo '<input type="submit" name="zurueck" value="Zurück"></p>';
echo '</form>';
die;
}else{
$user=$result['user'];

$_SESSION['user']=$user;

mysql_query("UPDATE admin_mitglieder SET lastlogin=NOW() where user='$user'");
if($user=="test")
{
echo "<a href=test.php>test</a>";
}elseif($user=="schaperm")
{
require("menu.php");
}


}
}
?>
</body>
</html>

-----------test.php-------------

<?php
error_reporting(E_ALL);
if($_SESSION['user'] == "") {
header("location:http://www.roemario.de/dev/new_fcw/logout.php");
die;
}
echo '<pre>' . print_r($_SESSION, true) . '</pre>';


echo "<html>";
echo "<title>Test</title>";
echo "<link rel='stylesheet' type='text/css' href='../style/style.css'>";

echo "<body>";
require("../connect/connect.inc.php");
$time = getdate();
$user=$_SESSION['user'];
echo $user;



echo "</body>";
echo "</html>";
?>


Ihr könnt euch das ganze Natürlich auch anschauen unter http://www.roemario.de/dev/new_fcw/admin/login.php
Benutzername: test
Passwort: test

Ich hoffe mir hat jemand eine Erklärung für dieses Phänomen und vielleicht auch eine Lösung.

Gruß Mario

Fabian85
22.01.2005, 20:45:01
Hi ich kann dir jetzt nicht sagen vielleicht baust du erstmal noch eine Session_destroy funktion ein. Vielleicht werden die daten bei dir nicht gelöscht oder so auf dem lokalen und daher kommst du da immer rein. Desweiteren würd ich noch die Cookieeinstellungen mal schecken! Hatte das auch mal gehabt das beim IE die Session nicht erhalten blieben bis ich mal gecheckt hatte das die Cookies deaktiviert waren.

Also ich glaube kaum das es sich da um ein Browserbug handelt!

Mir fälllt übrigens auf das du in der test.php oben kein Session_start() hast!

Ach so sag mal die variablen über $_POST abzufragen hat das irgendeinen vorteil als wenn man die einfach so abfragt? Weil ich das immer so mache. Also nicht wie du $_POST[username] sondern stattdessen einfach nur $username abfrage weil das klappt ja auch.

xabbuh
22.01.2005, 22:09:59
Original geschrieben von Fabian85
Ach so sag mal die variablen über $_POST abzufragen hat das irgendeinen vorteil als wenn man die einfach so abfragt? Weil ich das immer so mache. Also nicht wie du $_POST[username] sondern stattdessen einfach nur $username abfrage weil das klappt ja auch.
Das wird bei dir aber auch nur deswegen gehen, weil du in der php.ini die Einstellung register_globals aktiviert hast. Standardmäßig ist register_globals bei aktuellen PHP-Versionen deaktiviert.
Dazu gibt es auch ein entsprechendes Kapitel auf php.net: http://de.php.net/register_globals

Fabian85
23.01.2005, 02:08:23
jo danke werde mir jetzt angewöhnen variablem von formularen über $_POST[...] abzufragen.

Gut zu wissen. Wie ist das denn bei get? gibts da dann das array $_GET[..] oder wie?

momo.metti
23.01.2005, 03:39:00
Ja genau $_GET['....']

mfg momo

xabbuh
23.01.2005, 15:27:52
Original geschrieben von Fabian85
jo danke werde mir jetzt angewöhnen variablem von formularen über $_POST[...] abzufragen.

Gut zu wissen. Wie ist das denn bei get? gibts da dann das array $_GET[..] oder wie?

s.a. http://de.php.net/manual/de/language.variables.predefined.php#language.variables.superglobals