René: Sessionproblem

Hallo Forum,

ich habe einen Adminbereich für ein Forum mit einem Passwortschutz. Das ganze ist in PHP 4 programmiert. Das Passwort wird durch eine Session über die geschützten Seiten "mitgeschleppt". Leider scheint die Session irgendwie nicht mehr zu funktionieren. Ich kann mich einmalig einloggen, wenn ich aber weiter will, werde ich wieder mit der von mir programmierten Fehlermeldung, daß Passwort sei falsch, rausgeschmissen.

Ich habe im gleichen Webspace auch noch andere Passwortgeschützte Bereiche mit Sessions und die funktionieren einwandfrei. Es kommt auch keine Fehlermeldung. Ich verwende dabei die mit PHP 4.1 eingeführten Superglobals mit $_SESSION[] um das Passwort in der Session zu registrieren. Ich habe zum Test jetzt auf einer Seite eine print-Anweisung mit $_SESSION[passw] eingebaut und die Ausgabe ist leer. Woran kann das liegen?

schönen Gruß
René

  1. hi,

    ganz blöde frage, aber du bist dir 100% sicher, dass nicht irgendwo ein session_destroy drin ist? (ich hab neulich 2 tage wegen dem ding gesucht bis ich den fehler hatte).

    alternativ würde mir einfallen, dass die session vielleicht durch andere sessions auf dem server überschrieben wird (man kann doch immer nur 1 session pro server und client aufmachen wenn ich mich nicht irre).

    gruß
    cheops

    1. alternativ würde mir einfallen, dass die session vielleicht durch andere sessions auf dem server überschrieben wird

      Nein, das ist technisch so gut wie unmöglich.

      (man kann doch immer nur 1 session pro server und client aufmachen wenn ich mich nicht irre).

      Nein. Bei Benutzung von Cookies kann maximal eine Session pro Verzeichnisbaum (nicht Server) und Client aufgemacht werden, bei Benutzung der URL für die Sessionnummer ist auch diese Beschränkung prinzipiell umgehbar.

      Gruß,
        soenk.e

    2. ganz blöde frage, aber du bist dir 100% sicher, dass nicht irgendwo ein session_destroy drin ist? (ich hab neulich 2 tage wegen dem ding gesucht bis ich den fehler hatte).

      Da bin ich mir ganz sicher. Der Code ist hier sehr übersichtlich und ich kann beim besten Willen kein session_destroy ausmachen.

      alternativ würde mir einfallen, dass die session vielleicht durch andere sessions auf dem server überschrieben wird (man kann doch immer nur 1 session pro server und client aufmachen wenn ich mich nicht irre).

      Daran hatte ich auch schon gedacht. Aber auch das kann ich inzwischen ausschließen. Aus allem anderen bin ich vorher per Logout (welches ein session_destroy aufruft) rausgegangen. Außerdem müßte dann eine Fehlermeldung kommen (Warning: Cann not write session....blabla) das kenne ich bereits.

      trotzdem Danke
      René

  2. ich habe einen Adminbereich für ein Forum mit einem Passwortschutz. Das ganze ist in PHP 4 programmiert. Das Passwort wird durch eine Session über die geschützten Seiten "mitgeschleppt".

    Das solltest Du (unabhängig vom Problem) nicht tun. Das Speichern des Nutzernamens reicht vollkommen, denn den Nutzernamen speicherst nur Du in der Session nach Prüfung des Passworts. Ist also der Nutzername gespeichert, muß auch das Passwort stimmen.

    Passwörter mehr als nötig in der Gegend herumzuschleppen sollte grundsätzlich vermieden werden.

    Leider scheint die Session irgendwie nicht mehr zu funktionieren.
    Ich habe im gleichen Webspace auch noch andere Passwortgeschützte Bereiche mit Sessions und die funktionieren einwandfrei. [..] Ich habe zum Test jetzt auf einer Seite eine print-Anweisung mit $_SESSION[passw] eingebaut und die Ausgabe ist leer. Woran kann das liegen?

    Noch was vorweg: Der Index in ein Feld, den Du dort benutzt, ist ein Text. Texte werden in PHP in Anführungszeichen gesetzt. Von daher ist $_SESSION[passwd] falsch, es muß $_SESSION["passwd"] lauten.

    Und das dicke Ende zum Schluß: Ohne Codeeinsicht, nur auf Grundlage der Beschreibung "funktioniert nicht", wird Dir bei dem Problem keiner helfen können.

    Ich kann Dir höchstens den Tipp geben, _sofort_ nach session_start() den gesamten Inhalt von $_SESSION sowie $_COOKIE per var_dump() auszugeben, um wenigstens einzugrenzen, ob die Sessiondaten im Skript versehentlich überschrieben werden oder ob schon das Transportieren der Session nicht funktioniert.

    Gruß,
      soenk.e

    1. Hallo Sönke

      Passwörter mehr als nötig in der Gegend herumzuschleppen sollte grundsätzlich vermieden werden.

      Das ist ein guter Tip, allerdings im vorliegenden Fall nicht möglich, da es gar keinen Benutzernamen gibt. Ich bin der einzigste Benutzer und verwenden nur ein Passwort. Ein Mehrbenutzerlogin habe ich bei diesem Script nie vorgesehen.

      Noch was vorweg: Der Index in ein Feld, den Du dort benutzt, ist ein Text. Texte werden in PHP in Anführungszeichen gesetzt. Von daher ist $_SESSION[passwd] falsch, es muß $_SESSION["passwd"] lauten.

      Das weiß ich, die Screibweise stammt nur aus dem print-befehl und steht da sowieso in Anführungszeichen, also:
      $_SESSION["passw"]
      aber auch:
      print "$_SESSION[passw]";

      Ich kann Dir höchstens den Tipp geben, _sofort_ nach session_start() den gesamten Inhalt von $_SESSION sowie $_COOKIE per var_dump() auszugeben, um wenigstens einzugrenzen, ob die Sessiondaten im Skript versehentlich überschrieben werden oder ob schon das Transportieren der Session nicht funktioniert.

      Dann werde ich mal versuchen darüber den Fehler einzugrenzen.

      Danke
      René