Knut: Validierung aus PHP-Form entfernen/einschränken

Beitrag lesen

Hallo,
ich habe bisher noch nicht mit PHP gearbeitet und bin nun im Rahmen einer Einarbeitung in ein CMS auf PHP gestoßen. Vom Lesen ist es sehr verständlich, aber bei der Programmierung habe ich noch Probleme/Angst.

Ich will eine Kontaktformular einbauen, dieses darf allerdings nicht aus PHP/HTML bestehen, sondern nur aus aus PHP heraus erstellten HTML.
In meinem Beispiel werden leider alle Kontaktfelder validiert, bzw. als Pflichtfelder ausgegeben. Das würde ich gerne ändern (nur Vorname und Nachname als Pflichtfeld).

Könnte mir jemand eine Hilfe geben, wie ich das mache?

Die Lösung müßte in folgendem Bereich liegen:

if($action=='send'){foreach($fields as $i){initvar($i);if($GLOBALS[$i]=='')$e.='<li>Sie haben folgendes Feld vergessen '.$i;else $mailbody.=$i.': '.$GLOBALS[$i]."\n";}if(!(eregi("[1]+(.[_a-z0-9-]+)*@[_a-z0-9-]+(.[_a-z0-9-]+)*(.([a-z]{2,4}))+$",$email)))$e.='<li>'.$tx['error']['mustwritemail'].'.';else if($e==''){initvar('txtarea');$mailbody.=$txtarea;if(!(@mail($reciever,'Mailform from '.sv('SERVER_NAME'),$mailbody.$recievermessage,"From: ".$email."\r\n"."X-Remote: ".sv('REMOTE_ADDR')."\r\n")))$e.=tag('li').$tx['mailform']['notsend'];else {$t=tag('p').$tx['mailform']['send'].tag('/p');if(!(@mail($email,'Copy of mailform from '.sv('SERVER_NAME'),$mailbody.$message,"From: ".$reciever."\r\n"."X-Remote: ".sv('REMOTE_ADDR')."\r\n")))$e.='<li>'.$tx['mailform']['recieptnotsend'];}}}if($t==''||$e!=''){
$t='<form action="'.$sn.'" method="post"><input type="hidden" name="selected" value="'.$u[$s].'"><input type="hidden" name="action" value="send"><table cellpadding="5" cellspacing="0" border="0" width="400">';

In diesem Bereich müßte die Validierung stattfinden. Ich bin mir nicht sicher, wie ich die Entfernen kann (einfach das Foreach raus? Wie würde ich das Gabeln, dass nur bestimmte Felder validiert werden?).
Ich als Newbie würde mich wirklich freuen, wenn mir jemand kurz helfen könnte.

Gesamter Code:
$reciever='mail@email.de';
$message="\n\nDiese E-Mail wurde von Email.de versendet.\n\n";
$recievermessage="\n\nDiese E-Mail wurde automatisch generiert";
// Define your field names and add extra lines for select options
// Use _ for spaces
$fields=array('Vorname:','Nachname:','Strasse:','PLZ:','Stadt:','Telefon:','E-Mail:');
$select['adress']=array('none','elephant','cow','tiger');
$tx['mailform']['recieptnotsend']="Could not send reciept.";
// DO NOT CHANGE CODE BELOW!
function mtr($tk){if (is_array($GLOBALS['select'][$tk]))$t=select($tk); else $t='<input type="text" class="text" name="'.$tk.'" value="'.$GLOBALS[$tk].'">';
return '<tr><td>* '.ucfirst(preg_replace('/\_/',' ',$tk)).'</td><td>'.$t.'</td></tr>';}
function select($tk){$t='';foreach($GLOBALS['select'][$tk] as $i){$t.='<option value="'.$i.'"';
if($GLOBALS[$tk]==$i)$t.=' selected';
$t.='>'.$i.'</option>';} return '<select class="text" name="'.$tk.'">'.$t.'</select>';}
$t='';$mailbody='';
if($action=='send'){foreach($fields as $i){initvar($i);if($GLOBALS[$i]=='')$e.='<li>Sie haben folgendes Feld vergessen '.$i;else $mailbody.=$i.': '.$GLOBALS[$i]."\n";}if(!(eregi("[2]+(.[_a-z0-9-]+)*@[_a-z0-9-]+(.[_a-z0-9-]+)*(.([a-z]{2,4}))+$",$email)))$e.='<li>'.$tx['error']['mustwritemail'].'.';else if($e==''){initvar('txtarea');$mailbody.=$txtarea;if(!(@mail($reciever,'Mailform from '.sv('SERVER_NAME'),$mailbody.$recievermessage,"From: ".$email."\r\n"."X-Remote: ".sv('REMOTE_ADDR')."\r\n")))$e.=tag('li').$tx['mailform']['notsend'];else {$t=tag('p').$tx['mailform']['send'].tag('/p');if(!(@mail($email,'Copy of mailform from '.sv('SERVER_NAME'),$mailbody.$message,"From: ".$reciever."\r\n"."X-Remote: ".sv('REMOTE_ADDR')."\r\n")))$e.='<li>'.$tx['mailform']['recieptnotsend'];}}}if($t==''||$e!=''){
$t='<form action="'.$sn.'" method="post"><input type="hidden" name="selected" value="'.$u[$s].'"><input type="hidden" name="action" value="send"><table cellpadding="5" cellspacing="0" border="0" width="400">';
foreach($fields as $field)$t.=mtr($field);
$t.='<tr><td colspan="2">Deine Nachricht:<br><t'.'extarea rows="12" cols="80" name="t'.'xtarea"></t'.'extarea></td></tr>';
$t.='</table><p><input type="submit" class="submit" value="'.$tx['mailform']['sendbutton'].'"></p></form>'; }
$output=preg_replace('/<textarea.*textarea>/is',$t,$c[$s]);#

Leider sieht der Code sehr unübersichtlich aus, da ich nicht weiss, wo ich Zeilenumbrüche machen kann. Wie kann ich PHP aufbrechen, ohne das die Logik gestört wird?


  1. _a-z0-9- ↩︎

  2. _a-z0-9- ↩︎