Session



  • Also ich hab jetzt mal n bissl mit Sessions gespielt.
    Klappt alles eigentlich ganz normal.

    Nur hab ich n Problem:
    Ich mach alles über ne index.php und mit include

    Wenn ich jetzt ne login.php hab (Bsp) und ich will ne Session starten, dann geht das ja nicht, weil ich in der index.php schon was geschrieben habe.

    Jetzt muss ich ja praktisch in der index.php prüfen, ob irgentwas gesetzt ist oder nicht. Kann ich es nur so machen, oder gibt es eine andere Möglichkeit? Mir kommt das einfach nicht "sauber" vor.

    Danke!
    cu para
    😃



  • binde deine session.php doch einfach ganz oben in index.php ein!
    Ansonten könntest du es mit OutputBuffering versuchen 🙂



  • Ok!

    So noch was.

    Ich hab ne index.php mit Tabelle usw.
    Links ein Menü rechts der Inhalt (content.php)

    Jetzt mach ich ein Login, also ich rufe meine login.php auf, aber über die content.php.

    In der Login - Datei mach ich dann das mit den Sessions.
    $_SESSION['username'] = $username

    Jetzt kann ich aber leider nur innerhalb der login.php auf $_SESSION zugreifen.
    In andern Dateien kommt:

    Notice: Undefined variable: _SESSION in D:...news.php on line 7
    

    Wie kann ich von jeder, also von wirklich jeder Datei auf zum Beispiel $_SESSION['username'] zugreifen?? 😕

    Danke!
    cu para
    😃



  • War scheinlich hast du eine PHP-Version < 4.1.0 - versuchs mal mit $HTTP_SESSION_VARS (ist allerding im Gegensatz zu $_SESSION nicht superglobal, d.h., wenn du innerhalb von Funktionen darauf zugreifen willst musst du am Anfang dieser erst global $HTTP_SESSION_VARS; schreiben)

    Was du in diesem Fall auch probieren kannst (Workaround) (hab's aber noch nicht getestet):

    $GLOBALS['_SESSION'] = $HTTP_SESSION_VARS;
    

    Ist allerdings auch nicht so das Wahre 😉



  • Nein, daran liegt es nicht!
    Ich kann ja in der Datei selber $_SESSION... benutzen!

    Ich muss einfach die id über die Url mit geben!

    Aber wie mach ich das. In der Doku steht was von SID, kennt mein PHP aber garnet 😞

    HILFE!

    cu para
    😃



  • Je nach Einstellung in der php.ini wird das automatisch angehängt -> du musst dich um nichts mehr kümmern 🙂
    SID ist glaube ich nur gesetzt, wenn die ID nicht in einem Cookie gespeichert werden kann und enthällt dann "name_der_session=session_id". Brauchst du aber wie gesagt normalerweise nicht 😉
    Zeig mal, was du in news.php in line 7 stehen hast 😕



  • Zeile 7:
    echo($_SESSION['username']);



  • Ich hab PHP 4.3.1
    Was muss ich den einstellen, damit es auch ohne Cookies geht?

    Also das geht bei mir:
    index.php

    <?php
    session_start();
    
    if(isset($_POST['pass']))
        $_SESSION['pass'] = $_POST['pass'];
    
    // Verwenden Sie bei PHP 4.0.6 oder niedriger $HTTP_SESSION_VARS
    if (!isset($_SESSION['pass'])) {
        echo("existiert net!");
    } else {
        if($_SESSION['pass']=="Timo")
            echo("login ok");
    }
    ?>
    
    <html>
    <form method="POST" action=<?php echo $_SERVER['PHP_SELF'] ?>>
    <input type=text name=pass>
    <input type=submit>
    
    </form>
    
    <?php
    if(isset($_SESSION['pass']))
        echo("<a href=page.php>WEITER</a>");
    ?>
    </html>
    

    page.php

    <?php
    session_start();
    
    echo("Seite 2<br>");
    echo($_SESSION['pass']);
    ?>
    

    Aber nur mit Cookies...
    Will aber das es au ohne Cookies geht.

    Mein eigentliches Problem besteht aber immer noch!



  • ; Whether to use cookies.
    session.use_cookies = 1

    ; use transient sid support if enabled by compiling with --enable-trans-sid.
    session.use_trans_sid = 1

    Wenn es generell ohne Cookies laufen soll musst du session.use_cookies einfach auf 0 setzen. Das 2. ist das, von dem ich dir vorher erzählt hatte



  • Also das hab ich jetzt auch geschafft, mit der php.ini

    Mein großes Problem ist aber, dass $_SESSION['username'] einen Wert in login.php überliefert bekommt und ich aber nicht aus anderen Dateien, wie zum Beispiel news.php darauf zugreifen kann.

    Jetzt muss ich halt die Session ID übergeben. Entweder mit Cookie oder über die URI. Das Prinzip ist ja klar. Funzt au bei den 2 Testdateien von weiter oben.

    Nur sieht es jetzt so aus, dass ich mich auf login.php befinde, hier hab ich auch Zugriff auf $_SESSION, und jetzt drücke ich im Menü auf (include(menu.php))
    den Link der News (news.php) und dort kann ich nicht auf die $_SESSION zugreifen.

    Was mach ich falsch?

    DANKE!

    cu para
    😃



  • Du musst jedem Link (sofern du nicht mit Cookies arbeitest und das mit trans-sid net funktionier) die ID mitgeben und auf jeder Seite (nicht in jeder Datei im Falle von includes) session_start aufrufen.
    D.h. du musst am besten schon auf der Seite, mit dem Frameset (falls du Frames hast) die Session starten, damit jedes Frame die Session-ID weiß. Außerdem musst du, falls PHP dies nicht schon selber erledigt (wie schon gesagt) an jeden internen Link die Session-ID mit dranhängen



  • Das mit dem trans-dingens funzt aber. Nur in meinem Beispiel net. Guck doch mal weiter oben, da ist was mit 2 Dateien. Das geht bei mir auch ohne Cookies!!!!!

    Frames benutz ich nicht sondern Tabellen und so.

    Ich hab in der *.ini eingestellt das ich _NIE_ cookies verwenden möchte. Also müsste PHP alles automatisch machen.

    session_start rufe ich in der index.php auf, und bei mir läuft auch alles über die index.php

    f*ck!



  • JETZT GEHTS!!!!!!!!
    Hatte doch das session_start vergessen, ICH IDIOT!

    danke!

    cu para
    :D!!!


Anmelden zum Antworten