Logged_in() funktioniert nur in Firefox
Einklappen
X
-
das glaube ich zwar nicht, aber was soll ich zu dieser behauptung sagen.
fakt ist (entsprechende servereinstellungen vorausgesetzt), wird zu erst versucht ein cookie zu setztén, was bei deinen einstellungen auch funzen sollte. nur wenn das nicht geht, muss die sid per get/post übergeben werden.
Einen Kommentar schreiben:
-
Aber wenn ich die Einstellungen im IE auf "alle Cookies annehmen" gestellt habe und es trotzdem nicht funktioniert???
Einen Kommentar schreiben:
-
Weil Firefox vermutlich die Session-Cookies akzeptiert hat.
Einen Kommentar schreiben:
-
Falls es wen interessiert:
Habe nun alle Links so zusammengesetzt:
PHP-Code:<A HREF="beispiel.php?<?php echo strip_tags(SID)?>">
Dank an wahsaga, der mich mit seinem Link auf die richtige Fährte gebracht hat. Auch wenn mir eine konkretere Hilfe sicher lieber gewesen wäre.
Was mir immer noch nicht klar ist:
Wieso hat Firefox keine Probleme gemacht? Kann mir das wer erklären?
Einen Kommentar schreiben:
-
@wahsaga
Hab ich gesehen und gelesen. Cookies und als URL-Parameter.
Wenn ich die SessionID nicht als URL-Parameter übergebe, sollte sie wohl im Cookie übergeben werden, oder?
Habe im IE schon die Einstellungen bzgl. Cookies auf niedrigste Datenschutzstufe (alle Cookies annehmen) gestellt und trotzdem funktioniert es nicht.
Außerdem verstehe ich nicht, wenn an meinen Skripten was falsch sein sollte, wieso schafft es Firefox dann problemlos, sich so zu verhalten als wäre alles o.k.?
Einen Kommentar schreiben:
-
Auf der von mir verlinkten Manual-Seite gibt es extra einen Abschnitt mit der Überschrift "Übermittlung der Session-ID" ...!
Einen Kommentar schreiben:
-
@wahsaga
Hatte mich schon ein wenig informiert unter anderem hier:
http://tut.php-q.net/sessions.html
Um eine Session-ID zu bekommen, muß man eine Session anlegen. Dies geschieht mit der Funktion session_start. Es ist darauf zu achten, dass die Session nach Möglichkeit vor allem anderen gestartet wird, damit alle Teile des Scriptes darauf zugreifen können (auch etwaige Includes).
[COLOR=darkblue]Da PHP selbstständig überprüft, ob eine Session schon existiert, oder ob eine neue angelegt werden muß, braucht man sich auch nicht darum zu kümmern. [/COLOR]
Habe auch in allen Dateien betroffenen Dateien session_start() ganz oben am Dateianfang drin.
Oder ist damit die Übergabe der SessionId noch nicht gewährleistet?
Einen Kommentar schreiben:
-
Original geschrieben von Smartsoul
sid übergabe? ich dachte das findet automatisch statt?
http://www.php.net/manual/de/ref.session.php beschreibt, auf welche Arten die Übergabe der Session-ID passieren kann.
Einen Kommentar schreiben:
-
@ TobiaZ
Welche Browsereinstellungen meinst du?
sid übergabe? ich dachte das findet automatisch statt? die ist ja in der db abgelegt und wird mit logged_in() geprüft.
@Shurakai
nicht das ich wüsste. Es findet eine db-Abfrage statt, aber nur mit SELECT, also keine Veränderung der Datensätze
Einen Kommentar schreiben:
-
Wird beim nächsten Aufruf vielleicht irgendwas verändert... SessionID.. Datensatz in der DB gelöscht... oder so etwas?
Einen Kommentar schreiben:
-
ohne gelesen zu haben:
- browsereinstellungen?
- sid übergabe?
Einen Kommentar schreiben:
-
Logged_in() funktioniert nur in Firefox
Hi!
Habe gestern in einem Test festgestellt, dass mein logged_in() nur in Firefox sauber funktioniert. Basiert auf Login-Tutorial von Mr Happiness.
Nach geglücktem Login, rufe ich auf den folgenden Seiten, die Funktion logged_in() auf, um zu prüfen, ob er User eingeloggt ist. Bspw. die Datei 'auftragsformular.php'. Der erste Aufruf dieser Seite klappt und es werden mir verschiedene Auftragsmöglichkeiten angezeigt. Wenn ich davon eine auswähle, wird die Seite erneut aufgerufen und mittels Prüfung $_GET-Variablen ein anderer Teil des Skripts ausgeführt. Aber in IE und Opera werde ich plötzlich ausgeloggt! ???
in der sessionhelpers.inc.php steht
PHP-Code:function check_user($username, $userpass)
{
$sql = "SELECT `UserID` FROM `users` WHERE `NickName`='".$username."'
AND `UserPass`=MD5('".$userpass."') LIMIT 1";
$result = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($result)==1)
{
$user = mysql_fetch_assoc($result);
return $user["UserID"];
}
else
return false;
}
function login($userid)
{
$sql="UPDATE `users` SET `UserSession`='".session_id()."' WHERE `UserID`=".$userid;
mysql_query($sql);
}
function logged_in()
{
$sql="SELECT `UserID` FROM `users` WHERE `UserSession`='".session_id()."' LIMIT 1";
$result= mysql_query($sql);
return ( mysql_num_rows($result)==1);
}
function logout()
{
$sql="UPDATE `users` SET `UserSession`=NULL WHERE `UserSession`='".session_id()."'";
mysql_query($sql);
}
PHP-Code:session_start();
include 'incs/sessionhelpers.inc.php';
include 'incs/auftragshelpers.php';
baueauftragsform();
PHP-Code:function baueauftragsform()
{
if (!logged_in()) showlogdivs();
else
{
if ($_GET['ordertyp'] == '')
{
echo "<p>Wählen Sie zunächst eine Auftragsart aus.</p>\n";
echo "<p><a href='auftragsformular.php?ordertyp=basis'>Auftrag 1</a></p>\n";
echo "<p><a href='auftragsformular.php?ordertyp=pro'>Auftrag 2</a></p>\n";
}
elseif ($_GET['ordertyp'] == 'zusatz')
{
echo "<p>Sie wünschen Zusatzleistungen.</p>\n";
echo "<p>Zurück zur <a href='auftragsformular.php'>Auftragsauswahl</a>.</p>\n";
}
else
{
echo "<p>Sie haben das folgende Paket ausgewählt:</p>";
echo "<form method='post' action='auftragsenden.php'>
<input type='hidden' name='ordertyp' value='".$_GET['ordertyp']."' />
<input type='submit' name='submit' value='Bestellen' /></form>";
}
}
}
Woran könnte es liegen?
Bin wie immmer dankbar für eure Tipps!Stichworte: -
Einen Kommentar schreiben: