Ergebnis 1 bis 6 von 6

Thema: Post Variablen - Caching?

  1. #1
    Contao-Nutzer
    Registriert seit
    14.11.2009.
    Beiträge
    5

    Standard Post Variablen - Caching?

    Hallo,

    ich habe ein Formular mit einer Dropdown-Box.
    Beim Abschicken wird die ausgewählte Datei zum Download angeboten.

    Nun habe ich es so gelöst, dass die gleiche Seite noch einmal aufgerufen wird und ich oberhalb des html-Quellcodes per insert tag ein kurzes PHP-Script einbinde.
    Dort wird die Datei per header zum Download angeboten.

    Allerdings gibt es Probleme mit der post-Variablen. Per $_POST kann ich sie anscheinend nich abfragen, jedenfalls ist der Array leer.
    Mit $this.>Input.>post('datei') bekomme ich die ausgewählte Datei zurück. Allerdings wird diese Variable anscheinend gecached, da sie auf anderen Seiten, die das gleiche Template verwenden, nicht leer ist, sondern den Wert behält.
    Somit funktioniert meine Abfrage nicht, die Datei nur zum Download anzubieten, wenn die Variable nicht leer ist.

    Hoffe, ich habe mich einigermaßen verständlich ausgedrückt.
    Hat jemand eine Ahnung, wie ich in meinem PHP Schnipsel abfragen kann, ob das Formular gerade abgeschickt wurde?

    Vielen Dank schon mal,
    Angela

  2. #2
    Contao-Nutzer Avatar von haydi
    Registriert seit
    16.01.2010.
    Ort
    Mannheim
    Beiträge
    3

    Standard

    Huhuu,
    hab noch nicht wirklich Ahnung von TYPOlight, also sorry, falls ich jetzt absoluten Müll verzapfen sollte...

    Hast du das Caching aktiviert?
    Hab gelesen, dass wenn man das nutzt, darauf achten muss, dass für bspw. Suchergebnisseiten, das Caching auf 0 gesetzt werden muss.
    Vielleicht liegt darin der Fehler?

    Hab ich dich richtig verstanden...
    Dein Select-Feld hat also den Namen 'datei' und mit
    echo $_POST['datei'];
    wird nichts ausgespuckt, wenn die seite abgeschickt wurde?
    Heidi Wetzel

  3. #3
    Contao-Urgestein Avatar von FloB
    Registriert seit
    19.06.2009.
    Ort
    Sonnensystem
    Beiträge
    1.618

    Standard

    Klingt, als würde irgendwo was in eine Session geschrieben werden … ich meine auch, dass die Input-Klasse als Fallback Daten aus der Session holt – schau dir die Klasse mal genauer an, dann kannst du vielleicht nähere Infos dazu finden.
    So long,
    FloB since Nov. 2007 +706P +115P and counting

  4. #4
    Contao-Nutzer
    Registriert seit
    14.11.2009.
    Beiträge
    5

    Standard

    Zitat Zitat von FloB Beitrag anzeigen
    Klingt, als würde irgendwo was in eine Session geschrieben werden … ich meine auch, dass die Input-Klasse als Fallback Daten aus der Session holt – schau dir die Klasse mal genauer an, dann kannst du vielleicht nähere Infos dazu finden.
    Hab mir die Klasse einmal angeschaut. Dort werden tatsächlich als Fallback die Daten aus der Session geholt.
    Aber eigentlich müßten die $_POST ja nach dem Abschicken des Formulares gesetzt sein. Aber sie sind leer, wenn ich sie direkt in der Klasse ausgeben lasse.

    Hat jemand eine Ahnung, wie ich an die $_POST Variablen rankomme?

    Danke, Angela

  5. #5
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo Angela,

    vielleicht hilft Dir die Erweiterung inputvar weiter:
    https://contao.org/erweiterungsliste/view/inputvar.html

  6. #6
    Contao-Nutzer
    Registriert seit
    22.09.2012.
    Beiträge
    1

    HTML

    Kann mir jemand erklären warum PHP so wie man es kennt im CON-TAO nicht wirklich funktioniert.

    Mein submit button, input type submit, sieht so aus: <input id="ctrl_submit" class="submit" type="submit" name="submit" value="weiter"> und liegt in einme FORM TAG: <form id="myregisterformular" enctype="application/x-www-form-urlencoded" method="post" action="postseite">

    Mein modul hat ne compile() und natürlich auch eine generate() Methode, die compile sieht so aus:

    protected function compile() {

    if($_POST['submit'] != "weiter")
    {
    // bedingung immer wahr
    }
    ...
    }

    Leider ist $_POST['submit'] immer leer und die bedingung ist immer wahr. Obwohl ja submit=weiter sein müsste und die bedingung unwahr sein sollte, wie man es in PHP kennt. 8(

    Nun hab ich ein paar stunden meiner Lebenszeit verschwendet und auch sowas hier probiert:

    protected function compile() {

    if($this->Input->post('submit') != "weiter")
    {
    // bedingung immer wahr
    }
    ...
    }

    Oder auch:


    protected function compile() {

    $this->import('Input');

    if($this->Input->post('submit') != "weiter")
    {
    // bedingung immer wahr
    }
    ...
    }

    Sehr merkwürdig das ganze. Bitte nur antworten von versierten PHP Entwicklern die mir den genauen Grund dafür nennen können und nicht mit fertigen inputvar modulen um sich schmeissen oder auf Klassen verweisen die ich erst studieren muss um zu entscheiden ob das system für mich brauchbar ist. (studiert wird wenns brauchbar ist)

    Vielen Dank dafür wenn es nicht Monate für ne kompetente Antwort dauert.



    Man man man sehr fummlig, so funtzt es und solls aussehen.

    <?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');

    class ModuleStepRegister extends Module {

    protected $strTemplate = 'mod_result';

    public function generate()
    {
    if (TL_MODE == 'BE')
    {
    $objTemplate = new BackendTemplate('be_wildcard');

    $objTemplate->wildcard = '### STEPREGISTER ###';
    $objTemplate->title = $this->headline;
    $objTemplate->id = $this->id;
    $objTemplate->link = $this->name;
    $objTemplate->href = 'contao/main.php?do=themes&amp;table=tl_module&amp;act=edi t&amp;id=' . $this->id;

    return $objTemplate->parse();
    }

    return parent::generate();
    }

    protected function compile() {

    $dca = array();

    $dca[] = array
    (
    'anrede' => array
    (
    'label' => 'Gew&uuml;nschte Anrede',
    'inputType' => 'select',
    'search' => true,
    'options' => array('Bitte w&auml;hlen','Sehr geehrter Herr','Sehr geehrte Frau'),
    /* 'reference' => &$GLOBALS['TL_LANG']['tl_meins'], */
    'eval' => array('mandatory'=>true, 'maxlength'=>64, 'tl_class'=>'w50 wizard')
    ),
    'firma' => array
    (
    'label' => 'Firmenname',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>false, 'maxlength'=>64, 'helpmessage'=>'Ihr Firmename')
    ),
    'vorname' => array
    (
    'label' => 'Ihr Vorname',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true,'helpmessage'=>'Ihr Vorname')
    ),
    'nachname' => array
    (
    'label' => 'Ihr Nachname',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true,'helpmessage'=>'Ihr Nachname')
    ),
    'email' => array
    (
    'label' => 'E-Mail Adresse',
    'inputType' => 'text',
    'eval' => array('mandatory'=>true,'rgxp'=>'email')
    ),
    'telefon' => array
    (
    'label' => 'Telefonnummer',
    'inputType' => 'text',
    'eval' => array('mandatory'=>false)
    ),
    'backbutton' => array
    (
    'label' => '',
    'inputType' => 'backbutton'
    ),
    'submit' => array
    (
    'label' => 'weiter',
    'inputType' => 'submit'

    )
    );

    $dca[] = array
    (
    'bankname' => array
    (
    'label' => 'Bankname',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true, 'maxlength'=>128, 'helpmessage'=>'Der name Ihrer Bank')
    ),

    'kontoinhaber' => array
    (
    'label' => 'Kontoinhaber',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true, 'maxlength'=>128, 'helpmessage'=>'Der Kontoinhaber')
    ),

    'kontonummer' => array
    (
    'label' => 'Kontonummer',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true, 'maxlength'=>128, 'helpmessage'=>'Die Kontonummer')
    ),

    'bankleitzahl' => array
    (
    'label' => 'Bankleitzahl',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true,'helpmessage'=>'Die Bankleitzahl des Kontos')
    ),
    'backback' => array
    (
    'label' => '',
    'inputType' => 'backbutton'
    ),
    'submit' => array
    (
    'label' => 'weiter',
    'inputType' => 'submit'
    )
    );

    $dca[] = array
    (
    'bankname' => array
    (
    'label' => 'Bankname',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true, 'maxlength'=>128, 'helpmessage'=>'Der name Ihrer Bank')
    ),

    'kontoinhaber' => array
    (
    'label' => 'Kontoinhaber',
    'inputType' => 'text',
    'default' => '',
    'eval' => array('mandatory'=>true, 'maxlength'=>128, 'helpmessage'=>'Der Kontoinhaber')
    ),

    'backback' => array
    (
    'label' => '',
    'inputType' => 'backbutton'
    ),
    'submit' => array
    (
    'label' => 'weiter',
    'inputType' => 'submit'
    )
    );

    $frm = new Formular('myregisterformular');

    if(!isset($_SESSION['register_step'])){$_SESSION['register_step'] = array();}

    $step = intval($_SESSION['register_step']['step']) >= count($dca) ? 0 : intval($_SESSION['register_step']['step']);

    $frm->setDCA($dca[$step]);

    $frm->setConfig('generateFormat','<div>%label %field %error </div>');
    $frm->setConfig('attributes', array('tableless'=>true));


    if($frm->isSubmitted() && $frm->validate()){

    $_SESSION['register_step']['steps'][intval($_SESSION['register_step']['step'])] = $frm->getData();

    if(isset($_SESSION['register_step']) && count($dca) == $_SESSION['register_step']['step']){
    var_dump($_SESSION['register_step']);die();
    }

    $_SESSION['register_step']['step'] = $_SESSION['register_step']['step'] + 1;

    $this->redirect($this->Environment->request);

    }else{

    if(isset($_SESSION['register_step']))
    {
    if(isset($_SESSION['register_step']['step']) && intval($_SESSION['register_step']['step']) > 0)
    {
    $_SESSION['register_step']['step'] = intval($_SESSION['register_step']['step']) - 1;
    }
    }

    }

    $this->Template->result = $frm->parse();

    }
    }
    ?>

    Hilfe ich bin CON-TAO miniert. scheinbar braucht man ein Formular objekt. (Formular Library ist abgeändert: in der Parse(), $this->Template->tableless = $this->attributes['tableless']; hinzugefügt, hat aber nichts mit dem Commit zu tun, ich denke da hat einer keine Lust mehr gehabt, so verschwinden auch die <table> TAG's)
    Geändert von F.U.T.Z. (23.09.2012 um 01:03 Uhr)

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. Datenbank Keys und Caching
    Von Bench im Forum Sonstiges zu Contao
    Antworten: 0
    Letzter Beitrag: 22.02.2011, 15:09
  2. Zugriff auf POST-Variablen
    Von Rastafanda im Forum Formulare
    Antworten: 2
    Letzter Beitrag: 05.02.2011, 11:47
  3. Login bei eingestelltem Caching
    Von peter64 im Forum Geschützte Bereiche/Mitglieder
    Antworten: 5
    Letzter Beitrag: 24.11.2009, 11:22
  4. Einige Fragen zum TL-Caching
    Von xchs im Forum Sonstiges zu Contao
    Antworten: 4
    Letzter Beitrag: 19.09.2009, 17:34

Lesezeichen

Lesezeichen

Berechtigungen

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