Session ID offline

  • Warum kommte bei mir immer ein Warning, wenn ich das mit session_start(); offline starte? Online klappt es immer. Ich meine offline wird auch immer eine Session ID erstellt, aber es kommt trotzdem immer ein Warning.


    EDIT:


    Gleich noch ein Problem hinterher. Warum verschwindet die Session ID auf einmal. Ich habe zwei sehr leicht überschauliche SKripts:


    session.php:


    session2.php:


    Wenn ich session.php aufrufe, steht die Session ID noch im Link. Wenn ich dann aber auf den Link klicke und damit session2.php aufrufe, ist sie nicht mehr im Link. Wie kommt das?

  • 1) Zur Warning: Also wenn du die Fehlermeldung nicht postest, kann man dir auch nicht helfen. :rolleyes:
    Allerdings vermute ich, dass du den Pfad wo die Sessiondaten gespeichert werden, nicht korrekt gesetzt hast. In der Standardkonfig. ist der auf /tmp - das Verzeichnis gibt es auf deiner (vermutlich) Windowskiste nicht. Du musst in der php.ini für session.save_path ein existierendes verzeichnis einstellen (/ statt \ benutzen).


    2) In den meisten Fällen ist php so konfiguriert, dass die Session id nur per get weitergeben wird, wenn es nötig ist. Falls Cookies (auch standard) verwendet werden und dein Browser Cookies annimmt, wird die Session ID nicht mehr per GET weitergeben, weil sie im Cookie transportiert wird. Das ist auch sicherer.

    :king: live long and prosper :king:
    [Color="#E50000"]A[/Color][Color="#E52700"]l[/Color][Color="#E54E00"]w[/Color][Color="#E57600"]a[/Color][Color="#E59D00"]y[/Color][Color="#E5C400"]s[/Color][Color="#DEE500"] [/Color][Color="#B7E500"]a[/Color][Color="#90E500"] [/Color][Color="#68E500"]p[/Color][Color="#41E500"]l[/Color][Color="#1AE500"]e[/Color][Color="#00E50D"]a[/Color][Color="#00E534"]s[/Color][Color="#00E55B"]u[/Color][Color="#00E583"]r[/Color][Color="#00E5AA"]e[/Color][Color="#00E5D1"] [/Color][Color="#00D1E5"]t[/Color][Color="#00AAE5"]o[/Color][Color="#0083E5"] [/Color][Color="#005BE5"]m[/Color][Color="#0034E5"]e[/Color][Color="#000DE5"]e[/Color][Color="#1A00E5"]t[/Color][Color="#4100E5"] [/Color][Color="#6800E5"]a[/Color][Color="#9000E5"] [/Color][Color="#B700E5"]j[/Color][Color="#DE00E5"]e[/Color][Color="#E500C4"]d[/Color][Color="#E5009D"]i[/Color][Color="#E50076"].[/Color]

  • Ja, das hatte ich vermutet.
    Die Lösung steht im vorherigen Beitrag unter 1).

    :king: live long and prosper :king:
    [Color="#E50000"]A[/Color][Color="#E52700"]l[/Color][Color="#E54E00"]w[/Color][Color="#E57600"]a[/Color][Color="#E59D00"]y[/Color][Color="#E5C400"]s[/Color][Color="#DEE500"] [/Color][Color="#B7E500"]a[/Color][Color="#90E500"] [/Color][Color="#68E500"]p[/Color][Color="#41E500"]l[/Color][Color="#1AE500"]e[/Color][Color="#00E50D"]a[/Color][Color="#00E534"]s[/Color][Color="#00E55B"]u[/Color][Color="#00E583"]r[/Color][Color="#00E5AA"]e[/Color][Color="#00E5D1"] [/Color][Color="#00D1E5"]t[/Color][Color="#00AAE5"]o[/Color][Color="#0083E5"] [/Color][Color="#005BE5"]m[/Color][Color="#0034E5"]e[/Color][Color="#000DE5"]e[/Color][Color="#1A00E5"]t[/Color][Color="#4100E5"] [/Color][Color="#6800E5"]a[/Color][Color="#9000E5"] [/Color][Color="#B700E5"]j[/Color][Color="#DE00E5"]e[/Color][Color="#E500C4"]d[/Color][Color="#E5009D"]i[/Color][Color="#E50076"].[/Color]

  • Jetzt kommt immer noch die gleiche Fehlermeldung, bloß das der Slash jetzt ein Backslash ist:


    Warning: open(\tmp\sess_60d11cea6014c3572b5e01b5d03a3361, O_RDWR) failed: m (2) in C:\WINDOWS\Desktop\seiten\simpsonsfiles\main.php on line 3


    Noch eine Frage bzw. Probleme.


    Ich habe am Anfang:


    Also falls es die Variable $PHPSESSID noch nicht gibt, soll sie festgelegt werden. Genauso wie $username und $passwort. DIe Variabeln sollen zusätzlich registriert werden.


    Weiter im gleichen Quelltext habe ich noch folgendes:


    Wenn man jetzt das erste mal auf die Seite kommt, klappt das noch prima. DOch wenn ich jetzt auf einen Link klicke, der auf dieselbe Datei verlinkt und die Variable $PHPSESSID mit überliefert, wird $username nicht mehr ausgegeben. Ich dachte ich hätte $username jetzt registriert und könnte sie immer aufrufen? Was muss ich ändern, damit es klappt?

  • 1) was hast du denn als session.save_path eingetragen? /tmp gibt es bei dir nicht, du musst da ein existierendes Verzeichnis angeben (z.b. c:/windows/temp)
    zur Not überprüfe es mit folgender datei:
    <?php
    phpinfo();
    ?>
    Die rufst du auf und suchst nach session.save_path.



    2) Ähm, findest du es nicht etwas unsinnig, die session id in der session zu speichern?


    Also habe ich das richtig verstanden? Wenn noch kein Benutzername & Passwort registriert ist, soll automatisch "Gast" und "Passwort" gespeichert werden? Sonst bleibt alles so wie es ist?


    dann nimm folgenden code:

    PHP
    1. <?phpsession_start();// bei php über 4.1.0 $_SESSION verwenden,// ansonsten $HTTP_SESSION_VARS// username & passwort nicht gespeichertif(!isset($_SESSION['username']) || !isset($_SESSION['passwort'])){$_SESSION['username']="Gast";$_SESSION['passwort']="passwort";}// weiter auf die nächste Seiteecho "<a href='weiter.php?".session_name()."=".session_id()."'>Weiter</a>";?>



    weiter.php

    :king: live long and prosper :king:
    [Color="#E50000"]A[/Color][Color="#E52700"]l[/Color][Color="#E54E00"]w[/Color][Color="#E57600"]a[/Color][Color="#E59D00"]y[/Color][Color="#E5C400"]s[/Color][Color="#DEE500"] [/Color][Color="#B7E500"]a[/Color][Color="#90E500"] [/Color][Color="#68E500"]p[/Color][Color="#41E500"]l[/Color][Color="#1AE500"]e[/Color][Color="#00E50D"]a[/Color][Color="#00E534"]s[/Color][Color="#00E55B"]u[/Color][Color="#00E583"]r[/Color][Color="#00E5AA"]e[/Color][Color="#00E5D1"] [/Color][Color="#00D1E5"]t[/Color][Color="#00AAE5"]o[/Color][Color="#0083E5"] [/Color][Color="#005BE5"]m[/Color][Color="#0034E5"]e[/Color][Color="#000DE5"]e[/Color][Color="#1A00E5"]t[/Color][Color="#4100E5"] [/Color][Color="#6800E5"]a[/Color][Color="#9000E5"] [/Color][Color="#B700E5"]j[/Color][Color="#DE00E5"]e[/Color][Color="#E500C4"]d[/Color][Color="#E5009D"]i[/Color][Color="#E50076"].[/Color]

  • Es sollen aber nicht zwei sondern genau eine Datei sein.


    EDIT: Und was soll ich machen, wenn ich jetzt statt dem username "Gast" als username "Alex" haben möchte. Mit $_SESSION['username']="Alex"; hat das nicht funktioniert, wenn ich vorher username als "Gast" festgelegt habe. Gibt es da einen Befehl mit dem man das ändern kann?


    PS: Danke, die Fehlermeldungen kommen jetzt nicht mehr!

  • Sessionvariablen registrierst du einfach per
    $_SESSION['variablenname']="Wert";


    Also so:
    $_SESSION['username']="Alex";
    echo $_SESSION['username'];

    :king: live long and prosper :king:
    [Color="#E50000"]A[/Color][Color="#E52700"]l[/Color][Color="#E54E00"]w[/Color][Color="#E57600"]a[/Color][Color="#E59D00"]y[/Color][Color="#E5C400"]s[/Color][Color="#DEE500"] [/Color][Color="#B7E500"]a[/Color][Color="#90E500"] [/Color][Color="#68E500"]p[/Color][Color="#41E500"]l[/Color][Color="#1AE500"]e[/Color][Color="#00E50D"]a[/Color][Color="#00E534"]s[/Color][Color="#00E55B"]u[/Color][Color="#00E583"]r[/Color][Color="#00E5AA"]e[/Color][Color="#00E5D1"] [/Color][Color="#00D1E5"]t[/Color][Color="#00AAE5"]o[/Color][Color="#0083E5"] [/Color][Color="#005BE5"]m[/Color][Color="#0034E5"]e[/Color][Color="#000DE5"]e[/Color][Color="#1A00E5"]t[/Color][Color="#4100E5"] [/Color][Color="#6800E5"]a[/Color][Color="#9000E5"] [/Color][Color="#B700E5"]j[/Color][Color="#DE00E5"]e[/Color][Color="#E500C4"]d[/Color][Color="#E5009D"]i[/Color][Color="#E50076"].[/Color]

  • Mmh. Dann müsste doch folgendes auch funktionieren:


    main.php


    Klappt aber nicht. Wenn man die Seite startet also, ist die Variable $username noch nicht festgelegt und wird deshalb als "Gast" abgespeichert, richtig? "Gast" wird auch ausgegeben. Wenn man dann auf den Link klickt, der die gleiche Datei ( nämlich main.php ) aufruft, ist doch Variable $username bereits festgelegt. Also wird die if-Abfrage erfüllt und als $Username wird "Alex" gespeichert. Das klappt aber irgendwie nicht. Da das echio immer noch "Gast" ausgibt. Verstehst du, was mein Problem ist? Wie kann ich das Skript verändern, dass es so wird, wie ich das will?

  • Du musst das Script nicht verändern - das tut, was es tun soll. Evtl. nur vergessen, auf F5 zu drücken?

    :king: live long and prosper :king:
    [Color="#E50000"]A[/Color][Color="#E52700"]l[/Color][Color="#E54E00"]w[/Color][Color="#E57600"]a[/Color][Color="#E59D00"]y[/Color][Color="#E5C400"]s[/Color][Color="#DEE500"] [/Color][Color="#B7E500"]a[/Color][Color="#90E500"] [/Color][Color="#68E500"]p[/Color][Color="#41E500"]l[/Color][Color="#1AE500"]e[/Color][Color="#00E50D"]a[/Color][Color="#00E534"]s[/Color][Color="#00E55B"]u[/Color][Color="#00E583"]r[/Color][Color="#00E5AA"]e[/Color][Color="#00E5D1"] [/Color][Color="#00D1E5"]t[/Color][Color="#00AAE5"]o[/Color][Color="#0083E5"] [/Color][Color="#005BE5"]m[/Color][Color="#0034E5"]e[/Color][Color="#000DE5"]e[/Color][Color="#1A00E5"]t[/Color][Color="#4100E5"] [/Color][Color="#6800E5"]a[/Color][Color="#9000E5"] [/Color][Color="#B700E5"]j[/Color][Color="#DE00E5"]e[/Color][Color="#E500C4"]d[/Color][Color="#E5009D"]i[/Color][Color="#E50076"].[/Color]