Problem mit einer Session bein funpic!

jean-luc_picard

Grünschnabel
Hallo zusammen,

ich habe ein Loginscript wo eine Session erzeugt wird und man nur auf die Seite kommt wenn man eingeloggt ist. Also normal soweit.

Hier ist mein Code:

Code:
<?php
session_start();
include("../config/config_db.php");

$nickname = $_POST["nick"];
$passwort = md5($_POST["pw"]);

$abfrage = "SELECT nick, pw, id FROM event_user_login WHERE nick LIKE '$nickname' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->pw == $passwort)
    {
    $_SESSION["nickname"] = $nickname;
    $_SESSION["db_id"] = $row->id;
    echo "Angemeldet";
    }
else
    {
    echo "Falsches PW";
    }
?>

Und das habe ich am Anfang an jeder Seite:

Code:
<?php

session_start();

if(!isset($_SESSION["nickname"]))
{
echo "Bitter erst anmelden!";
}
else
{
$user_login = $_SESSION["nickname"];
$user_id = $_SESSION["db_id"];
};
?>

Jetzt mein Problem. Ich habe auf funpic eine Testseite geladen. Eigentlich klappt alles
aber es kommt sehr oft vor das ich mich anmelde und kurz nach der anmeldung er sofort wieder sagt "Bitte anmelden" also als wenn keine Session existiert. Melde ich dann noch einmal an dann klappt es für eine Zeit.

Woran kann das liegen? Ich kann keinen Fehler bei mir entdecken?

MFG

Picard
 
Auf den ersten Blick sieht eigentlich alles okay aus.

Ist es möglich, dass du auch ein Logout-Script hast und das irgendwo versehentlich aufrufst? Oder kann es sein, dass die Session sonst irgendwie flöten geht (sprich session_destroy() oder unset($_SESSION['nickname']) oder was in dieser Art)? Führst du session_start() wirklich auf jeder Seite aus?

Ausserdem würde ich in deinem SQL Statement "nickname='$nickname'" abfragen an Stelle von Like. Du benutzt ja eh keine Wildcards, was Like dann meiner Meinung nach etwas den Sinn raubt.
 
Du musst Cookies aktiviert haben oder die Session-ID in der URL übergeben...

Bin auch bei funpic und hatte das Problem bei einem User... Da lag es an deaktivierten Cookies...
 
Ok, danke für die schnellen antworten.
Ich habe nirgendwo eine destroy anweisung oder so. Habe auf jeder Seite session_start!

Also das sieht immer aus als ob die Session nach dem ersten einloggen gelöscht wird.
Nach dem 2. Versuch bleibt es dabei!

Das mit der ID in der URL übergeben überlege ich mir einmal.
Dann muss ich anstatt if(!isset($_SESSION["nickname"])) die ID in der URL abfragen.

Vielleicht hilft es ja. Aber ich übergebe doch die ID mit:

seite2.php?' . SID . '

Das sollte doch so funktionieren oder?
 
Versuch es zu erst damit, dass DU in DEINEM Browser (bitte lass es FF sein) Cookies aktivierst, wenn die Session dann überlebt, weißt du schonmal wo das Problem ist...

Wegen dem mit der ID inner URL hatte ich irgendwo mal ne kleine Funktion gefunden, da es lässtig wird, wenn du jeden Link umschreiben musst^^
Ich such mal ebend ;)

[EDIT]:
Gesucht hab, Skript noch nicht gefunden, aber passende Info...
Der funpic-Server erstellt AUTOMATISCH nen Cookie mit der SID...
http://www.funpic.de/forum/webhosting/ltopic,44536,0,asc,10.html
[/EDIT]
 
Zuletzt bearbeitet:
GEFUNDEN!

Code:
function mkurl($url){
      $url = (!SID) ? $url : $url . '&' . SID;
      return $url;
   }

Ausgeführt wirds dann mit $url="DERLINK"; und mkurl($url);
Wenn die SESSION mit ner ID NICHT existiert wird die url unverändert wieder ausgespuckt, ansonsten wird die ID der SESSION an das ENDE der url gehangen...
Da wo dann ursprünglich der Link stand brauchst du dann nur $url echon... ;)
 
Jo danke erstmal,
ich habe schon viel mit PHP gemacht aber so richtig weiß trotztdem nich was du meinst.

Ich habe ja noch andere anweisungen im GET stehen bei meiner URL nicht nur die SID.
Die müssen ja auch noch irgendwie dahin :)

Magst du es noch einmal kurz erklären?
Wenn nicht ist nicht schlimm!
Oder wie prüfe ich ob die SID eine Session ist?


MFG

Picard
 
Zurück