Zum Inhalt springen

Verständnisproblem

Erstellt am 16. August 2007 · 1 Antwort · letzte Antwort am 16. August 2007

Tags: Frage

typo3ms ·

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>
typo3ms ·

Naja vielleicht hat auch einfach Jemand von euch eine Alternative für mich um gesendete $_POST Variablen in eine Typo3 Session zu übernehmen, zu prüfen und bei Fehlern die Werte wieder zum korrigieren im Formular angezeigt werden. Das ganze sollte anders wie bei mir mit den ersten Klick funktionieren.

Hat da Jemand einen Lösungsansatz für mich oder sogar eine Lösung für das o.g. Problem? 😢 #angry#