Hallo,
ich habe ein PHP Funktion, die ich mir für Typo3 zurecht gebastelt habe, diese hier:
function postToSession($arrayField)
{
$session = $GLOBALS["TSFE"]->fe_user->getKey('ses','tx_adcat');
if(isset($_POST[$arrayField]))
{
$session[$arrayField] = htmlentities($_POST[$arrayField]);
}
$GLOBALS["TSFE"]->fe_user->setKey('ses','tx_adcat',$session);
$GLOBALS["TSFE"]->storeSessionData();
}
Diese Funktion steckt eine $_POST Variable in ein Typo3 Session. Als reines PHP Script mit $_SESSION funktioniert das Top.
Aber leider nicht in dem mom. Zustand, diese Script wird in eine andere PHP Datei eingebuden, in der auch in der ersten Zeile, folgendes steht (die PHP Datei wird mit PHP_SCRIPT_EXT eingebunden):
$session = $GLOBALS["TSFE"]->fe_user->getKey('ses','tx_adcat');
Wenn ich jetzt die o.g. Funktion mit einem Formular verwenden passiert folgendes. Ich gebe Daten in das falsche Daten in das Formlar ein ( damit die Prüfung aktiv wird und wieder das Formular mit den falschen und markierten Feldern aufruft). Wenn ich das Formular dann wieder vor mir habe und ein Feld korrigiere und abgesendet habe, bleibt es immernoch fehlerhaft.
Erst beim zweiten Absenden übernehmt er die Werte??? Woran liegt das???
Ich habe mal etwas gebastelt, damit das nachvollzogen werden kann. ( Die o.g. Funktion muss vorher so genannt werden, wie die Datei, die included wird und das action="index.php?id=25" im Form Tag muss noch angepasst werden...)
<?php
include("functions.php");
error_reporting(E_ALL);
$session = $GLOBALS["TSFE"]->fe_user->getKey('ses','tx_adcat');
if(!isset($session['site'])) $session['site'] = 1;
if(isset($_POST['go'])) $session['site']++;
if(isset($_POST['back'])) $session['site']--;
$GLOBALS["TSFE"]->fe_user->setKey('ses','tx_adcat',$session);
$GLOBALS["TSFE"]->storeSessionData();
postToSession('test');
print_r($session);
echo "<br><br>";
print_r($_POST);
?>
<form action="index.php?id=25" method="post">
<input type="text" name="test" value="<?=$session['test']?>"/>
<input type="submit" name="go" value="go"/>
<input type="submit" name="back" value="back"/>
</form>