Ergebnis 1 bis 26 von 26

Thema: Session Varable geht verloren

  1. #1
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard Session Varable geht verloren

    Hallo zusammen,
    leider stehe ich mal wieder auf dem Schlauch.
    In einer eigenen php-Seite habe ich zwei Formulare angelegt. Im ersten wird die Variable $Veranstaltung abgefragt und in die Definition $Veranstaltung = utf8_decode ($_SESSIO['Veranstaltung']); übergeben. In dem zweiten formular und den weiteren Verarbeitungen wird diese Variable gebraucht. Das funktioniert auch auf meinem Apacheserver prima. Mit {{file::Abfrage.php}} in Contao eingesetzt, funktioniert das nicht. Da ist die Variable plötzlich leer oder nicht bekannt.
    Kann mir da bitte jemand helfen?

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Hast du es mal mit der internen Session Klasse versucht?



    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Vielen Dank Tim G,
    nur, Deinen Hinweis verstehe ich leider nicht. ich hatte gedacht mit $_SESSIO['Veranstaltung'] sei das geschehen. Außerdem scheint mir die Schwierigkeit bei der andersartigen Behandlung durch Apache einerseits und Unix bzw Contao andererseits zu bestehen.
    Gruß

  4. #4
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    1. Es muss $_SESSION heissen.

    Im Grunde hast du recht, aber contao bringt eine sehr gute interne Klasse zum hantieren mit Sessiondaten, die besonders durch die Nähe am Arbeiten mit reinen Arrays die Arbeit erleichtert. ( und es geht nichts verloren, ausser man überschreibts )


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  5. #5
    Community-Moderator Avatar von schman
    Registriert seit
    19.06.2009.
    Ort
    Dornbirn
    Beiträge
    3.739
    User beschenken
    Wunschliste

    Standard

    Nein $_SESSION['Veranstaltung'] ist "standard" PHP. Das hat mit dem Contao Framework nichts zu tun. Schau dir die Session Klasse von Contao an.

    Wenn ich es noch richtig im Kopf habe, wird die $_SESSION irgendwo in Contao gelöscht, ich schau mal ob ich die entsprechende Codezeilen finde. Deshalb ist in deinem Skript die Session wahrscheinlich unbekannt.
    Kein Privat Support via PM.

  6. #6
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo Schman,
    das hast Du richtig erkannt. Es handelt sich um ein 'standart' php - file. Wie kann ich die Contao Session Klasse da integrieren? Geht das überhaupt? Andererseits wäre es interessant, zu sehen wo Contao die Sessons abschaltet und das vielleicht zu ändern.
    Gruß

  7. #7
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    $this->import('Session');
    $arrSession = $this->Session->getData(); // alle session daten als array

    Sollte innerhalb der contao Struktur funktionieren.


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  8. #8
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo zusammen,
    ich bitte um Entschuldigung. Mit dem $_SESSIO[' usw. hatte ich mich und Euch auf eine falsche Fährte gelockt. Aufgefallen ist mir das durch die Replik vom Tim. Dieser Schreibfehler war auch im Code.
    Es handelt sich gar nicht um eine Session. Das war nur ein Rest eines früheren Versuchs. (komisch, das php da nicht gemeckert hat)
    Tatsächlich reicht es ja (in standart PHP) den Variableninhalt des ersten Formulars in einem hidden input des zweiten Formulars zu übergeben, um ihn nach dessen Absendung noch zur Verfügung zu haben. Jedenfalls auf einem Apache, aber leider nicht in Contao. Da muss ähnlich wie bei den Sessions eine Funktion greifen, die solche Inhalte löscht.
    Kann mir bitte jemand sagen, wie ich diese Funktion ausschalten oder umgehen kann?
    Viele Grüße

  9. #9
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Kommst du da nicht mit $_POST['myHidden']; ran bzw. nutze hier die Input Klasse


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  10. #10
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo Tim,
    der Codeschnippel lautet:
    echo '
    <form action="" method="post" onsubmit="return Formularkontrolle(this)" name="Formular">
    -
    -
    -
    <input type="hidden" name="Veranstaltung" value ="'.$Veranstaltung.'">
    '
    Und in der Deklaration:
    $Veranstaltung = $_POST['Veranstaltung'];

    Wie gesagt, so nicht in Contao.
    Noch ne Idee?

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Achso nein, dass ist natürlich nicht richtig und sollte auch leer sein im Quelltext

    <input type="hidden" name="Veranstaltung" value ="'.$Veranstaltung.'">

    Richtig:
    PHP-Code:
    <input type="hidden" name="Veranstaltung" value ="<?php echo $Veranstaltung?>">
    Jetzt natürlich noch darauf achten, dass wirklich was in der Variable $Veranstaltung drinsteht
    Geändert von Tim G (25.06.2012 um 14:47 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  12. #12
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo Tim,
    das ist alles wunderschön. Doch das eigentliche Problem bleibt. Das php - File läuft als eigenständiges File hervorragend, aber eben nicht unter Contao! Da ist die Variable $Veranstaltung leer obwohl dieser Teil nur angefahren werden soll wenn $_POST existiert:

    if ($_POST) // Das erste Mal vom oberen Formular1
    {

    bisherige_Meldung ($Veranstaltung);
    echo $Veranstaltung;
    ...
    Hier bereits ist die $Veranstaltung leer.
    Das muss am Contao liegen.

  13. #13
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    der Fehler muss woanders liegen.

    Ich hab mir jetzt einfach mal ein kleines externes File mit einem simplen Formular und einem hidden Field gebaut und via {{file::testsession.php}} eingebunden.

    PHP-Code:

    <?php
    $varTest 
    "Das ist ein Test";
    ?>
    <?php 

    if( $_POST['TEST_VARIABLE'] == "Das ist ein Test" )
    {
        
    $varTest "Variable gesended";
    }
    echo 
    $varTest;

    ?>

    <div class="ce_form">
        <form method="post" enctype="application/x-www-form-urlencoded" id="form_testsession" action="">    
        <input type="hidden" name="FORM_SUBMIT" value="form_testsession" />
        <input type="hidden" name="TEST_VARIABLE" value="<?php echo $varTest?>" />
        <div class="submit_container">
            <input type="submit" class="submit" name="submit" value="Absenden">    
        </div>
        </form>
    </div>
    Ich kann die POST Variable auslesen und ggf. darauf reagieren.
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  14. #14
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Danke Tim,
    das ist ja spannend. Werde das Morgen mal ausgiebig testen und nachvollziehen.
    Gruß

  15. #15
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Das war zu spannend. Hier nun Dein code etwas abgewandelt, um das Problem aufzuzeigen. Auf 'Standart-php' bleibt der Inhalt der $varTest erhalten, in contao nicht.
    PHP-Code:
    <?php
    if (!$_POST)
    {
        
    $varTest "Das ist ein Test";
        echo 
    $varTest;
    }

    if( 
    $_POST)
    {
        echo 
    $varTest;
    }

    echo 
    '
    <div class="ce_form">

        <form method="post" enctype="application/x-www-form-urlencoded"  action="">    
        <input type="hidden" name="varTest" value="'
    .$varTest.'" />
        <div class="submit_container">
            <input type="submit" class="submit" name="submit" value="Absenden"> 
            <input type="hidden" name="FORM_SUBMIT" value=" … "/>
            <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}"/>   
        </div>
        </form>
    </div>
    '
    ?>

  16. #16
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Ich versteh das Problem nicht. Sorry. Funktioniert alles fehlerfrei!
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  17. #17
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo Tim,
    Welche Version von Contao fährst Du? Ich habe 2.10 installiert.
    Gruß

  18. #18
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    2.11.4


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  19. #19
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Dann vermute ich in dem Unterschied die Ursache. Weiß vielleicht jemand etwas darüber?

  20. #20
    Contao-Nutzer Avatar von MBM
    Registriert seit
    12.02.2010.
    Ort
    Berlin
    Beiträge
    39

    Standard

    Ich nutze $_SESSION in mehreren Hooks in Contao 2.11.4 ohne Probleme.

  21. #21
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo MBM oder auch Tim,
    kannst Du das mal bitte in den Beispielcode einbauen? Ich kenne mich noch gar nicht mit Sessions aus bzw. meine Versuche damit haben alle nicht funktioniert.
    Danke

  22. #22
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Hier steht eigentlich alles was man braucht und an 2.10 oder 2.11 liegt es nicht (habs grad selbst auf 2.10 getestet)
    Was genau willst du denn umsetzen?
    Geändert von Tim G (26.06.2012 um 09:09 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  23. #23
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Hallo Tim,
    eine vorher bekannte Variable soll nach dem Posten eines Formulars noch bekannt sein, siehe php-Code. So lange dieser Beispielcode nicht läuft, habe ich keine Chance, den viel umfangreicheren Originalcode zum Laufen zu kriegen. Da Du sagst, bei Dir laufe der Code unter Contao 2.10, weiß ich nun wirklich nicht mehr weiter.
    Gruß vom Rentier

  24. #24
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    So, hier mal Contao-konform und mit zwei Variablen. Eine wird vor dem POST gesetzt und eine wird nach dem POST gesetzt. Beide Variablen werden in der Session abgelegt und bleiben erhalten bis die Session gelöscht wird. (auch seitenübergreifend)

    PHP-Code:

    <?php
    $varTest 
    'Das ist ein Test';

    // Variable in Session ablegen vor dem Absenden
    $this->import('Session');
    $arrSession $this->Session->getData();

    $arrSession['meineSession'] = array
    (
        
    'vorPost'    => $varTest
    );
    $this->Session->setData($arrSession);

    //--

    // Post auslesen, Wert aus TEST_VARIABLE ach dem Absenden zusätzlich in Session ablegen
    $this->import('Input');
    if(
    strlen($this->Input->post('TEST_VARIABLE')) )
    {
        
    $arrSession['meineSession']['nachPost'] = $this->Input->post('TEST_VARIABLE');
        
    $this->Session->setData($arrSession);
    }

    // Beide Variablen direkt aus der Session ausgeben
    $arrSessionNachPOST $this->Session->getData();
    foreach(
    $arrSessionNachPOST['meineSession'] as $key => $value)
    {
        echo 
    'Key: ' $key '     Value: ' $value '</br>';
    }


    ?>


    <div class="ce_form">
        <form method="post" enctype="application/x-www-form-urlencoded" id="form_testsession" action="">    
        <input type="hidden" name="FORM_SUBMIT" value="form_testsession" />
        <input type="hidden" name="TEST_VARIABLE" value="<?php echo $varTest ' (wird dem Senden ergaenzt)';  ?>" />
        <div class="submit_container">
            <input type="submit" class="submit" name="submit" value="Absenden">    
        </div>
        </form>
    </div>
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  25. #25
    Contao-Fan
    Registriert seit
    31.08.2009.
    Beiträge
    368

    Standard

    Jau Tim, dat haut hin! Danke tausendmal!
    Dem schlichten Wiederaufruf der gleichen Variablen aus der gleichen Seite steht das REQUEST_TOKEN entgegen, ohne das in meiner Version keine Formulardaten gesendet werden. Der wiederholte Aufruf der gleichen Seite z. b. mit Aktualisieren führt zu Token-Rquest-Fehler. Mit dem zweiten Formular in der gleichen Seite tue ich gerade dies. Leider erschien hier nicht die Fehlermeldung.
    Also entweder Deine Lösung, oder die Formulare auf zwei Seiten verteilen wobei das erste Formular die zweite Seite mit dem zweiten Formular aufruft.
    Deine Version ist eleganter.
    Viele Grüße vom Rentier

  26. #26
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Gern geschehen!


    Sent from my iphone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •