Serverseitige Validierung eines Formulars

Hallo zusammen,

ich habe ein Formular in meiner PHP-Datei einbaut, das serverseitig
eine E-Mail über sendmail bei unserem Provider versenden soll. Das
ganze funktioniert auch soweit. Das Formular ruft zum Versenden ein
vom Provider verfügbares cgi-Script auf:

<form action=3D"/mail.cgi" method=3D"post" name=3D"formContact">

Die Validierung möchte ich gerne auch serverseitig durchführen lassen,
da wir bei uns zwecks Barriefreiheit darauf achten müssen, dass es
eine alternative Methode zum JavaScript gibt.

Jetzt wär meine Frage, ob es über die möglich ist, ein Zwischenscript
aufzurufen, das eine Prüfung vornimmt? Wenn ja, wie kann ich dann die
eingegebenen Formulardaten über die post-Methode an das cgi-Script
weiterleiten?

Gruß,
Peter
infiniteclient [ Di, 18 September 2007 11:16 ] [ ID #1823492 ]

Re: Serverseitige Validierung eines Formulars

Peter schrieb:

> Wenn ja, wie kann ich dann die
> eingegebenen Formulardaten über die post-Methode an das cgi-Script
> weiterleiten?

Zum Selberbasteln:
25.2. Wie kann ich einen HTTP POST-Request absenden?
http://www.php-faq.de/q/q-code-post.html

Oder eine Auswahl von mehr oder weniger fertigem:
http://de.php.net/manual/en/ref.curl.php
oder http://de.php.net/manual/en/ref.http.php
oder http://pear.php.net/package/HTTP_Client
oder http://pear.php.net/package/HTTP_Request

BTW:
Wenn auf dem Server sendmail installiert ist, kannst du dann die Mail nicht
gleich selbst verschicken, anstatt dieses CGI vom Provider zu benutzen?

Gruß
Carsten
Carsten Wiedmann [ Di, 18 September 2007 11:29 ] [ ID #1823493 ]

Re: Serverseitige Validierung eines Formulars

Peter schrieb:
> ich habe ein Formular in meiner PHP-Datei einbaut, das serverseitig
> eine E-Mail über sendmail bei unserem Provider versenden soll. Das
> ganze funktioniert auch soweit. Das Formular ruft zum Versenden ein
> vom Provider verfügbares cgi-Script auf:
>
> <form action="/mail.cgi" method="post" name="formContact">
>
> Die Validierung möchte ich gerne auch serverseitig durchführen lassen,
> da wir bei uns zwecks Barriefreiheit darauf achten müssen, dass es
> eine alternative Methode zum JavaScript gibt.

Sinn und Zweck der Validierung:

JavaScript = Benutzerfreundlichkeit, da sofort Rückmeldung an den
Benutzer gegeben werden kann

Serverseitig = Datenvalidierung für die Korrektheit der Daten für die
weitere Verwendungen

Das ganze auf die Serverseite zu machen hat nichts mit Barrierfreiheit
zu tun, sondern ist notwendig, da man JavaScript leicht umgehen kann und
eine Validierung auf Clientseite somit auf keinen Fall ausreicht.

> Jetzt wär meine Frage, ob es über die möglich ist, ein Zwischenscript
> aufzurufen, das eine Prüfung vornimmt? Wenn ja, wie kann ich dann die
> eingegebenen Formulardaten über die post-Methode an das cgi-Script
> weiterleiten?

Wie wäre es mit einer solchen Lösung (so als Ideenanreiz):

mail.cgi:
<?php
$validate = array('name' => array('Type' => 'String', 'Max_Length'
=> 50),
'alter' => array('Type' => 'Numeric', 'Min' => 12,
'Max' => 120));
require 'validate.cgi';

if($valid)
{
...
}
?>

validate.cgi:
<?php
$valid = true;
foreach($validate as $index => $options)
{
switch($options['Type'])
{
case 'String': if(strlen($_POST[$index]) > $options['Max_Length'])
{
$valid = false;
}
break;
case 'Numeric': if(is_numeric($_POST[$index]))
{
if($_POST[$index] < $options['Min'])
{
$valid = false;
}

if($_POST[$index] > $options['Max'])
{
$valid = false;
}
} else
{
$valid = false;
}
break;
}
}
?>

So würde ich es machen, wenn ich das bräuchte, was du beschreibst. Musst
dann nur schauen, dass dem Benutzer eine schöne Rückmeldung gibst und
eine Möglichkeit seine Daten neu einzugeben.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Di, 18 September 2007 11:34 ] [ ID #1823494 ]
PHP » de.comp.lang.php.misc » Serverseitige Validierung eines Formulars

Vorheriges Thema: mehrere Datensätze auf einmal verändern
Nächstes Thema: while ausgabe in string umleiten!?