Session "verfällt" in neuem Fenster?!?!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session "verfällt" in neuem Fenster?!?!

    Hi @ all....

    Ich hoffe hier kann mir jemand weiterhelfen, komm einfach nicht weiter...

    Und zwar hab ich demletzt irgendwann ein Steckbrief-Script geschrieben, dessen User-Management, etc... auf Sessions basiert. Bis dato hat das auch gnaz gut funktioniert...
    Heute ist mir allerdings aufgefallen, dass, wenn ich im menü auf "Steckbriefe anschauen" klicke, zwar das neue Fenster öffnet, ich dort allerdings gleich wieder ausgeloggt werde...

    Hier mal ein paar Code schnipsel:

    So wird das neue Fenster mit der Steckbriefübersicht geöffnet:


    PHP-Code:
    <p><img src='abst.gif'>&nbsp;&nbsp;<a href='topsecret/index.php?orderby=name
    &order=ASC&sessionid=".session_id()."&userid=".$_GET['
    userid']."'
    target='_blank'>Steckbriefe anschauen</a></p


    laut Statusleiste im IE wird die Session und das ganze zeugs auch mitübergeben, aber beim aufruf der folgenden seite springt er dann wohl ans Ende zur Logout-Funktion, weil irgendwas mit den Sessions nicht stimmt.


    PHP-Code:
    <?php
    session_start
    ();

    require(
    "../config.php");

    error_reporting(E_ALL);
      
    mysql_connect("$dbhost""$dblogin""$dbpwd") or die(mysql_error());
      
    mysql_select_db("$dbname") or die(mysql_error());
      
      
    $session_sql "SELECT id, rang, session_rang, session_ip, sessionid FROM steckbriefe
    WHERE ID = '"
    .$_SESSION['userid']."'";
      
    $session_result mysql_query($session_sql);
      for (
    $i=0$i<mysql_num_rows($session_result); $i++) {
          list (
    $id,$rang,$session_rang,$session_ip,$sessionid) = mysql_fetch_row ($session_result);
      }
      
      
    $sql "SELECT * FROM steckbriefe ORDER BY '".$_GET['orderby']."' ".$_GET['order']."";
      
    $result mysql_query($sql);
      
    $log mysql_num_rows($result);

    if(
    $rang == $_SESSION['rang'] AND $_SESSION['rang'] == $session_rang AND
    $_SESSION['IP'] == $session_ip AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'] AND
    session_id() == $sessionid AND session_id() == $_GET['sessionid'] AND $_SESSION['userid'] == $_GET['userid']) {

    ?>

    <html>
    ...
    ...
    ...
    </html>
    <?php

    } else {
      
    header("Location: ../index.php?action=logout&userid=".$_SESSION['userid']."");
    }
    ?>


    irgendwie wird wohl die session, die ja per URL übertragen wird, auf dieser seite nicht anerkannt, denn bei der Logout-Funktion "header("Location: ../index.php?action=logout&userid=".$_SESSION['userid']."");" kann er die "$_SESSION['userid']" nicht anfügen...

    Ich vermute mal, dass die session_start() da ganz oben nicht greift oder so irgendwie...




    vielleicht/hoffentlich kann mir hier jemand weiterhelfen...
    das komische ist halt, dass das früher ging, und jetzt nicht mehr...







    weil ich mir dachte, dass mit der if()-Abfrage dann wohl was net stimmt, hab ich mir die ganzen parameter in der if()-Abfrage mal ausgeben lassen. Ergebnis:

    folgende fehler:

    1. er kann die datenbankabfrage net ausführen, weil er die WHERE ID = '".$_SESSION['userid']."' net korrekt abfragen kann, weil die session scheinbar net existiert (Notice: Undefined index: userid)

    dadurch is ja dann klar, dass die große lange if() abfrage auf false umspringt...

    aber schlimmer noch:
    2. die session id die ich mit get() in der URL übergebe, ist ne andere, als wenn ich die session id mit echo session_id(); auf der seite als test ausgeben lasse...
    und dann is auch klar, dass die ganzen anderen $_SESSION["xyz"] net existieren...


    wie aber komm ich jetzt an genau dieselbe session wie in meinem hauptfenster???
    das ganze problem kommt ja nur deshalb, weil ich die seite in "_blank" öffn, und net im gleichen fenster...
    Zuletzt geändert von Jaws; 01.06.2004, 22:29.

  • #2
    heißt deine session "sessionid"?
    wenn ja, dann solltest du mit session_start das auch an php kommunizieren, da der standard PHPSESSID vorsieht
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      wie jetzt?
      kapier net ganz was du damit meinst?


      ich "generier" nach dem login ne session mit "session_start()"...
      session_start() hab ich dann auf jeder neuen seite, die aufgerufen wird, und eben auch auf dieser steckbrief übersicht, die sich ja in einem neuen fenster öffnet.


      das problem ist, so seh ich das halt, dass durch das neu geöffnete fenster und durch das "session_start()" am anfang ne neue session gestartet wird, bei der die ganzen session-variablen, die ich in der andern session gespeichert hab, net bestehen...

      und wie krieg ich des dumme script dazu, dass es in dem neuen fenster, in des ja die session über die URL mitübergeben wird, die gleiche session wieder startet, sprich fortsetzt, wie in dem "hauptfenster", wo ja alles ganz normal klappt???

      Kommentar


      • #4
        Original geschrieben von Jaws
        wie jetzt?

        das problem ist, so seh ich das halt, dass durch das neu geöffnete fenster und durch das "session_start()" am anfang ne neue session gestartet wird, bei der die ganzen session-variablen, die ich in der andern session gespeichert hab, net bestehen...
        falsch, happy hat recht.


        du übergibst hier die session (sessionid=".session_id().") namens sessionid
        auf der nächsten Seite rufst du nur session_start auf, wenn jetzt in der php.ini nicht unter session_name = sessionid steht wird eine neue id generiert.

        Tip:
        PHP-Code:
         orderby=name
        &order=ASC&".session_name()."=".session_id()."&userid=". 
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          Danke marc75 ;-)

          Jetzt funktioniert wieder alles...

          Kommentar

          Lädt...
          X