Sessions & php 4.3



  • Hi!
    Ich verwende zur Zeit php 4.3 und es gibt immer Probleme. Mein Problem sind die Sessions. Unter php 4.2 funktoniert der Code wunderbar. UNter 4.3 gar nicht. Die Variable wird zwar gespeichert und erkannt. Der Wert der Variavle wird jedoch nicht gespeichert. Also wenn ich eine Variable speicher enthält diese keinen Wert. Weiß jemand wovon das kommt ?

    Code:

    <?php
        // start sessions
        @session_start();
    
        $NumVs = 0;
    
        // check for registered values
        if( session_is_registered( "ss_vs" ) )
        {
            $ss_vs++;
            $NumVs = $ss_vs;
        }
        else
        {
            $ss_vs = $NumVs = 1;
            session_register( "ss_vs" );
        }
    
        echo( "Sie haben die Page $NumVs mal besucht. Viel Spaß noch!" );
    
    ?>
    

    Fehler beim Aufruf von der funktion session_register();
    Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

    Vielleicht könnt ihr mir helfen.

    Bye & Danke



  • Hi!

    Ich habe den Fehler gefunden.
    Als ich mir nochmal Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled durchgelesen habe bin ich in die datei php.ini gegangen und suchte nach global und fand dann tatsächlich den Eintrag register_globals = off. Als ich dann den Eintrag zu register_globals = On umgeschrieben hatte funktionierte es wunderbar.

    Bye


  • Mod

    Original erstellt von <Coder>:
    bin ich in die datei php.ini gegangen und suchte nach global und fand dann tatsächlich den Eintrag register_globals = off. Als ich dann den Eintrag zu register_globals = On umgeschrieben hatte funktionierte es wunderbar.

    register_globals soll aber Off sein
    das ist jetzt der default bei PHP



  • Hi!

    Was meinst du damit ? Soll register_globals = off sein ?
    Dann funktionieren ja ´nicht mehr die sessions !

    Bye



  • Doch. Die FUnktionieren wunderbar. Das Problem wist wenn du die register_globals on machst, dass es zwar bei dir läuft aber vermutlich auf keinem aktuellen webserver. Sind die registerglobals off, so findest du z.B. alle session-variablen in em array $_SESSION. Deine Beispielvariable wäre also unter $_SESSION['ss_vs'] abgelegt.
    Übrigens findet man alle GET-Variablen dann in $_GET, POST in $_POST und Cookie-Variablen in $_COOKIE. Falls man sihc nicht für GET oder POST entscheiden will kann man auch $_REQUEST nehmen, da sind die zusammengefasst.



  • Hi!
    Danke hab ich jetzt gleich mal geändert.
    Noch eine Frage bei Sessions. Kann ich dort Klassen speichern ?

    Bye



  • HI!
    PHP ist ein sche***. Machmal gehts und machmal sagt er einen Error:

    Fatal error: Cannot increment/decrement overloaded objects nor string offsets



  • Bei was genau kommt denn dieser Fehler? 🙄 Sonst kann man dir irgendwie schlecht helfen 😉



  • Hi!

    Bei diesem Code kommt der Fehler nicht:

    $ship_t1 = $ship_t2 = $ship_t3 = 0;
        $bJoined = false;
    
        if( Isset( $_POST['ship_t1'] ) )
        {
            $ship_t1 = $_POST['ship_t1'];
            if( $ship_t1 > 0 )
                $bJoined = true;
        }
    
        if( Isset( $_POST['ship_t2'] ) )
        {
            $ship_t2 =$_POST['ship_t2'];
            if( $ship_t2 > 0 )
                $bJoined = true;
        }
    
        if( Isset( $_POST['ship_t3'] ) )
        {
            $ship_t3 =$_POST['ship_t3'];
            if( $ship_t3 > 0 )
                $bJoined = true;
        }
    
        $paFleets = NULL;
        if( session_is_registered( "ss_CurrentFleets" ) )
        {
    
        }
        else 
        {
            $ss_CurrentFleets = array();
    
            for( $iF=0; $iF < $glUser->m_iNumPlanets; $iF++ )
                $ss_CurrentFleets[$iF]->Ships = new SHIPS;
            session_register( 'ss_CurrentFleets' );
        }
    
        // pointer
        $pCurrentFleets = &$_SESSION['ss_CurrentFleets'];
    
        if( $bJoined )
            $pCurrentFleets[$glPid]->Activated = $bJoined;
    
        $pCurrentFleets[$glPid]->Ships->Ship1 += $ship_t1;
        $pCurrentFleets[$glPid]->Ships->Ship2 += $ship_t2;
        $pCurrentFleets[$glPid]->Ships->Ship3 += $ship_t3;
    

    Und Hier tritt er auf.

    [code] $ship_t1 = $ship_t2 = shipt3=0;ship_t3 = 0; bJoined = false;

    if( Isset( \_POST['ship\_t1'] ) ) { ship_t1 = $_POST['ship_t1'];
    if( shipt1>0)ship_t1 > 0 ) bJoined = true;
    }

    if( Isset( \_POST['ship\_t2'] ) ) { ship_t2 =$_POST['ship_t2'];
    if( shipt2>0)ship_t2 > 0 ) bJoined = true;
    }

    if( Isset( \_POST['ship\_t3'] ) ) { ship_t3 =$_POST['ship_t3'];
    if( shipt3>0)ship_t3 > 0 ) bJoined = true;
    }

    $paFleets = NULL;
    if( session_is_registered( "ss_CurrentFleets" ) )
    {

    }
    else
    {
    $ss_CurrentFleets = array();

    for( $iF=0; $iF < $glUser->m_iNumPlanets; iF++)iF++ ) ss_CurrentFleets[$iF]->Ships = new SHIPS;
    session_register( 'ss_CurrentFleets' );
    }

    // pointer
    pCurrentFleets = &_SESSION['ss_CurrentFleets'];
    **if( bJoined ) { pCurrentFleets[$glPid]->Activated = $bJoined;

    pCurrentFleets[glPid]->Ships->Ship1 += shipt1;ship_t1; pCurrentFleets[$glPid]->Ships->Ship2 += shipt2;ship_t2; pCurrentFleets[$glPid]->Ships->Ship3 += $ship_t3;
    }** [/code]

    Ich weiß einfach nicht warum..

    Bye



  • Und wie sieht der Fehler aus 😕



  • Hi!

    Fatal error: Cannot increment/decrement overloaded objects nor string offsets in Line X Y Z

    Line X Y Z ist:

    pCurrentFleets[glPid]->Ships->Ship1 += shipt1;ship_t1; pCurrentFleets[$glPid]->Ships->Ship2 += shipt2;ship_t2; pCurrentFleets[$glPid]->Ships->Ship3 += $ship_t3;

    Ich wunder mich hier auch !!!!!



  • Uops, ganz überlesen 🙄
    Ist in pCurrentFleets[glPid]->Ships->Ship1 auch eine Zahl gespeichert?
    Funktioniert es wenn du einen fixen Wert eingibst, also z.B. pCurrentFleets[glPid]->Ships->Ship1 += 5;



  • Hi!
    Ja, ich habe das nicht mit 5 sondern mit der Zahl 1 versucht. Der Fehler ist jedoch wie vorher wieder augetreten.

    Bye



  • Und du hast wirklich nur den if( $bJoined ) - Block noch mit außen rum gemacht? Was steht in $glPid? Könntest du mir ggf. den Code mal mailen?



  • Hi!
    Ja ich habe wirklich nichts anderes hinzugefügt.
    ICh könnte dir teilweise den Code schicken. An welche Email ?

    Bye



  • Hi!

    Kommando zurück. Auf unerklährlicherweise geht es jetzt. Das ist wirklich komisch. Das ist bei mir offt so, dass ein Code nicht funktioniert und ich diesen einfach neu Schreibe und ich dann am Ende merke, dass es kein unschied gibt zum vorherigen. Echt komisch.

    Danke nochmals an ALLE die mir geholfen haben !!!

    Bye



  • Hi!
    Kommando wieder her und es fängt wieder an ..
    Woran kann der Schei* liegen ?
    Fehler bei php `?

    Danke für jeglich Hilfe

    Bye



  • Schick mir mal deinen Code (E-Mail: siehe Profil)


Anmelden zum Antworten