Formulare serverseitig mit PHP validieren

Nobody23

Grünschnabel
Guten Tag

Anfängerfrage:

Folgende Aufgabenstellung:

HTML Seite mit Formularen und ein serverseitiges php File/Skript, welches das Textfeld validiert.

Wenn der "Absenden" Knopf gedrückt wird, werden der/die Eingabefelder per POST dem Server mit dem Skript übergeben.
Wenn das Skript jedoch ein (z.B.) leeres Textfeld vorfindet, soll der Text vor dem Feld verändert werden(z.B. soll die Schrift Kursiv/Fett werden und die Farbe soll sich ebenfalls ändern).
Der Inhalt des Textfeldes soll erhalten bleiben.

Wie geht das, bzw wie muss ich den Aufbau gestalten?

Code:
<?php
function controllOnNullInput(value)
{
	$regex = '';
	if(preg_match($regex,$value))
	{
		return true;
	}
	else
	{
		echo "Sie haben nichts eingegeben!";
		return false;
	}
}

function controllAll() {
  echo "Test";
  controllOnNullInput($pTextfield)
  
}


$pTextfield = $_POST["textfield"];

controllAll();
?>


HTML:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Nicolas Meyer">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<form action="checkField.php" method="POST">
<!-- hier folgen die Formularelemente -->
<p>Eingabe erforderlich:
  <input type="text" name="textfield" id="1">
  <input name="abschicken" type="Submit" id="abschicken"  value="Abschicken">
</p>
</form>
</BODY>
</HTML>

Vielen Dank im Voraus.

Gruss Nobody
 
Zuletzt bearbeitet:
Ich bin zwar kein profi aber du könntest eine function machen wo du dann bestimmte Zeichen in einem Text ändern lässt hier ein kleines beispiel.
PHP:
function smilies()
{
// TEXT = str_replace("gesuchte Zeichen", "ersetzen in diese Zeichen/oder Bild", in diesem Text
  $text = str_replace(":-)", "<img src=\"gif/lachen.gif\">",$text);
  $text = str_replace(";-)", "<img src=\"gif/zwinker.gif\">",$text);
  //... usw
}
klar kannst du das mit Regex besser machen, aber leider kann ich das selber nicht wirklich... aber so könntest du deine bestimmten sachen ändern lassen...
Dieses Beispiel ist jetzt eher in einem Gästebuch oder Shoutbox zu finden, wie auch in diversen Foren ;-)
Hoffe ich konnte dir bissle helfen
 
Hi, die kontrolle könntest du via regex kontrollieren.
kontrollfunktion:
PHP:
if(!preg_match($regex, $wert)){
  $template = str_replace("<!--...-->", "info", $template);
  $fehler = true;
}
if($fehler){
  print $template;
}else{
  ...auswerten;
  weiterleiten via metarefresh oder header();
}
....
 
Ähm kann sein das ich das jetzt etwas missverstanden habe, aber warum machst du aus dem formular nicht ein php script? und schreibst vor deine Normalen felder ne zeile wie:
PHP:
<p>
<?php
if(!empty($error['textfield1']))
    {print "<span class=\"error\">Eingabe erforderlich</span>";}
else
    {print "Eingabe erforderlich:";}
?>
  <input type="text" name="textfield" id="1">
  <input name="abschicken" type="Submit" id="abschicken"  value="Abschicken">
</p>

/* und oben checkst due vor irgendeiner ausgabe irgendwie so:*/ 
<?php
$error=array();
if($_POST['abschicken']=="Abschicken")
   {
    if(empty($_POST[textfield]))
          {
            $error['textfield']=TRUE;
           }
   }
?>

ok ist jetzt reihenfolgen verkehrt, aber ich würde das so in der art machen
 
Ich trenne die Präsentationsschicht von der Verarbeitungsschicht.
Zumindest minimal.
Somit ist es einfach und es geht schneller die Seite zu Redesignen.
 
Also es gibt folgende Möglichkeiten:
1. Javascript und PHP Überprüfung (Benutzer kann Formular erst gar nicht abschicken, wenn nicht alle Felder den gewünschten Wert haben; zusätzliche PHP Überprüfung, falls jemand versucht diese Sperre zu umgehen)

2. Formular mittels Ajax an PHP senden (Überprüfung wird ausschließlich von PHP durchgeführt; im Fehlerfall wird ein entsprechendes Javascript zurückgegeben, dass die fehlerhaften Felder in einem anderen Style formatiert; im Erfolgsfall wird der komplette Inhalt des Elternelementes durch die Erfolgsseite ersetzt)

3. Formular traditionell an PHP senden (Überprüfung ebenfalls ausschließlich durch PHP; im Fehlerfall muss Formular neu generiert werden mit entsprechender Formatierung der einzelnen Felder; im Erfolgsfall wird die Erfolgsseite zurückgegeben)
 
3ter Fall is gefragt.
Kann mir wer das erläutern oder ein Tutorial mitteilen das diesen Fall abhandelt?

Ne weitere Frage, kann man Funktionen, welche auf dem Serverskript sind, vom Client aus aufrufen?
 
Kurze Frage, werden beim "Versenden" die Daten an alle Stellen, die ein "$_POST["textfield"];" enthalten, gesendet?
 
Ich weiß jetzt nicht genau ob ich deine Frage jetzt richtig verstanden habe.
Ich erkläre dir einfach mal die Datenversand funktion:

...
<form method="POST oder GET" action="zielpage z.b. index.php">
<input type="...." name="vorname ...." />
...
..
.
<input type="submit" value="versand" />
</form>
...


Beim klick auf den Button Versand (input type="submit")
werden alle "input, select, textarea usw." elemente an die zielpage (url) versendet, die sich zwischen <form ...> und </form> befinden.
Wie du die Daten abfragen kannst liegt dran, was du gewählt hast (POST oder GET).
Wenn POST dann $_POST[] ansonsten $_GET[].
Die $_POST und $_GET können solange der prozess läuft jeder zeit abgefragt werden.

Wenn action="index.php" und der inhalt der index.php lediglich
<?php
include("test.php");
?>
kannst du die $_POST und $_GET also auch in test.php verarbeiten.

Ich hoffe mal ich hab deine Frage damit beantwortet.
 
Zurück