JsessionID geht verloren

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

  • JsessionID geht verloren

    Hi,

    vorab - ich weiss nicht ob das in dieses Forum gehört, hab bei Nachforschungen im Web gesehen, dass es mit Javaservlets zu tun haben soll und schreib's deshalb hier rein.


    Der Aufbau meiner Seiten:

    Frame1: Navigation mittels Javascriptbaum
    Frame2: Tabellen

    Also was ich eigentlich wollte:

    ich setzte beim Aufruf des Frame2 Cookies über den Zustand meiner Tabellen/Felder, etc, ob sie sichtbar oder unsichtbar sind.

    Hat bei zwei ebenen bisher auch alles schön und gut funktioniert.

    Aber:

    Sobald ich jetzt praktisch neue Felder anlegen lasse oder Daten hole um die Tabellen zu füllen, den Baum zu erzeugen verliert er die Session!


    Für nähere Erläuterung:

    Bei Klick auf meinen Javascriptbaum (besteht am Anfang aus zwei Ebenen) geht er in die Datenbank und holt (falls vorhanden) die Kinder und hängt sie an den Baum dran.

    Gleichzeitig schickt er die Id des angeklickten Astest/Kindes an Frame2 und setzt die dazugehörige Tabelle auf hidden oder block (je nach dem was im Cookie steht).


    Teste auf Appache und Tomcat.

    Bei Appache funktionierts, bei Tomcat nicht
    => deshalb meine Vermutung wegen der JSESSIONID, die ja vom Server selbstständig erzeugt wird.



    PHP-Code:
    function subtabelle1($subid)
    {
      global 
    $index$laenge3$laenge5$suchstring$meinArray;

      
    $tmp3=0;
      
    $tmp4=0;

      
    /* Falls eine Id uebergebene wurd schaut er nach dem Wert in dem Cookie fuer diese Id und aendert ihn um */
      
    if($suchstring==$subid)
      {
        if(
    $_COOKIE[$subid]=="none")
        {
          
    $_COOKIE[$subid]="block";
          
    setCookie($subid'block');
        }
        elseif(
    $_COOKIE[$subid]=="block")
        {
          
    $_COOKIE[$subid]="none";
          
    setCookie($subid'none');
        }
      }

      
    /* holt den Wert fuer das display der Subtabelle aus dem Cookie, falls eines gesetzt ist */
      
    if(isset($_COOKIE[$subid]))
        echo 
    "<table id=\"".$subid."\" border='1'  style='display:".$_COOKIE[$subid]."' cellpadding='1' cellspacing='1' style='border-collapse:collapse;'width=100%>";
      
    /* andernfalls setzt er das display der Subtabelle auf none=nicht sichtbar*/
      
    else
        echo 
    "<table id=\"".$subid."\" border='1'  style='display:none' cellpadding='1' cellspacing='1' style='border-collapse:collapse;'width=100%>";

        
    /* Die Subtalle mit werten fuellen*/
        
    for($i=0$i<count($laenge3); $i++)
        {
          
    /* dazu die werte aus dem Array holen, das die Werte mit nur einem Punkt beinhaltet*/
          
    $search=$laenge3[$i];
          
    $pos=strpos($search".");
          
    $search2=substr($search0$pos);
          
    /* falls die erste zahl des wertes mit der Id der Tabelle uebereinstimmt*/
          
    if ($search2==$subid)
          {
              
    /* wird der wert aus dem gesamtarray geholt und ausgegeben */
              
    $keystring=$laenge3[$i];
              
    $key=array_search($keystring$index);
              echo 
    "<tr>";
              for(
    $j=0$j<count($meinArray[$i]); $j++)
              {
                echo 
    "<td class='list'>&nbsp;".$meinArray[$key][$j]."</td>";
              }
              echo 
    "</tr>";

              
    /* schaut nach ob ein Kind des Kindes existiert*/
              
    for($z=0$z<count($laenge5); $z++)
              {
                
    $suche=$laenge5[$z];
                
    $stringarray=explode("."$suche);
                
    $stringsuche=$stringarray[0].".".$stringarray[1];

                if(
    $stringsuche==$meinArray[$key][0])
                {
                  if(
    $tmp3<>$subid)
                  {
                    
    $tmp3=$subid;
                    
    $tmp4=$tmp4+1;
                    if(
    $tmp4==1)
                    {
                      
    $name=$meinArray[$key][0];
                      
    $name2=str_replace(".""_"$name);
                      if(!isset(
    $_COOKIE[$name2]))
                      {
                        
    cookies($name'none');
                      }
                      echo 
    "<tr>";
                      echo 
    "<td class='list' colspan='25' cellpadding='0' cellspacing='0'>";
                      
    subtabelle2($meinArray[$key][0]);
                      echo 
    "</td>";
                      echo 
    "</tr>";
                    }
                    }
                  }
                }
                
    $tmp3=0;
              }
             
    $tmp4=0;
           }
        }
      echo 
    "</table>";

    beim setzen dieser Zeile

    $tmp4=0;

    gibt er den Geist auf, lasse ich diese weg bleibt die JSESSIONID zwar vorhanden, aber er setzt mir meine Cookies nicht.

    Das seltsame ist halt, eine andere funktion für die Haupttabelle macht genau das gleiche mit fast identischem Code, gerade das mit dem Setzen der $tmps, und dort funkts!!!

    Sitze seit drei Tagen an dem Problem und komme nicht weiter.


    Help!!!
    carpe noctem

    schon wieder ist es Tag!!!!

  • #2
    Also,

    nachdem ich das Web weiter durchforstet habe, manchmal sieht man den Wald vor lauter Bäumen nicht mehr, fand ich in einem Forum ein ähnliches Problem.


    Scheinbar kann es beim IE passieren, dass die JSESSIONID verloren geht (Cookiebezogen), wenn man Pop-ups öffnet, oder mit Frames arbeitet.

    Stimmt das?
    carpe noctem

    schon wieder ist es Tag!!!!

    Kommentar

    Lädt...
    X