Form-Validierung mit Session

funkyvino

Mitglied
Hallo,

ich möchte Formfelder mit einem Script validieren, zunächst ganz simpel prüfen ob überhaupt ein Eintrag gemacht wurde. Der Code den ich verwende sieht folgendermaßen aus:

<?PHP
session_start();
$errors= array();

$vname=$_POST["vname"];
$nname=$_POST["nname"];

if (empty($vname))
$errors["vname"]="The First Name field cannot be empty.";
if (empty($nname))
$errors["nname"]="The Last Name field cannot be empty.";

if (count($errors)){
$lastformVars = array();
$lastformVars["vname"]= $vname;
$lastformVars["nname"]= $nname;

$_SESSION["lastFormVars"] = $lastformVars;
$_SESSION["errors"] = $errors;
header("Location: newalumni.php");
exit;
}

else {


session_destroy();
header("Location: newalumni2.php");
}
?>

Funktioniert auch, d.h. wenn beide Felder ausgefüllt sind wird dies registriert, wenn nicht, die Form erneut aufgerufen. Leider werden dann evtl. eingetragene Werte nicht mehr angezeigt. Inhalte von Formfeldern, die beriets richtig ausgefüllt wurden möchte ich jedoch beibehalten.

Könnte mir jemend einen kleinen Denkanstoss geben? Wie sage ich der Form, dass sie jene Werte wieder anzeigen soll?

Besten Danke,
Markus
 
Wieso gibts du im Formular in den value-Eigenschaften nicht noch die entsprechende $_POST-Variable mit?

Also:

PHP:
<input name="vname" value="<?php echo $_POST['vname'] ?>">

So wird, wenn das Formular bereits versand wurde und somit die $_POST-Variablen gefüllt sind, der entsprechende Wert mit ausgegeben...

Somit brauchst du auch nicht

PHP:
$lastformVars = array();
$lastformVars["vname"]= $vname;
$lastformVars["nname"]= $nname;

$_SESSION["lastFormVars"] = $lastformVars;
 
Danke für deinen Vorschlag.

Klang einfacher als es letztlich ist. Felder sind immer noch leer.
Ich vermute wenn bei Feststellung eines Fehlers

header("Location: newalumni.php");
exit;
}

wieder auf die form-Page springt werden die Werte nicht mitgenommen.
Wie kann ich der nun wieder neugeladenen Form mitteilen, diese Werte wieder zu verwenden?

Danke für Eure Hilfe!
 
Tja, da könntest du wohl recht haben... Aber dann nutzt du halt doch deine Session-Vars und gibst anstatt $_POST['vname'] $_SESSION["lastFormVars"]["vname"] in deinen Formularfeldern aus...
 
hmm ich habe als Value nun mal

<?php echo ($_SESSION["lastFormVars"]["vname"]); ?>

gesetzt, aber leider immer noch gähnende Leere im Textfeld.

Noch eine Idee?
 
Textfeld? Also <textarea>? Hast du dann den Wert auch zwischen den beiden Tags, also <textarea><?php echo ($_SESSION["lastFormVars"]["vname"]); ?></textarea>?
 
So hat ne Weile gedauert, aber war lösbar.
Hatte mich wohl falsch ausgedrückt, nicht textarea war gemeint sondern ein normales Inputfield. Überprüfe die Eingabefelder gleich im selben Script mittels:

<?
if(isset($_REQUEST['nname']))
// wurde das Formular abgesendet

{
if(strlen($_REQUEST['vname']) == 0 )
{
$error1 = "Fehlermeldung XY.";
}

else
{
?>

am Beginn der Seite und mit der Valueangabe:

<input type="text" name="vname" <? if(isset($_REQUEST['vname'])){
echo("value=\"".$_REQUEST['vname']."\""); } ?>>

im Formfeld um die Daten beizubehalten.
Just in Case someone likes to know...

Danke,
Markus
 
Zurück