Probleme beim Prüfen eines Formulars

atlantyz

Erfahrenes Mitglied
Hallo zusammen,

ich habe hier auf tutorials.de diese schöne Anleitung zum Prüfen eines Formulars gefunden:
http://www.tutorials.de/forum/php-tutorials/13494-php-formular-eingabe-ueberpruefen.html
und natürlich sofort umgesetzt.

Leider bekomme ich eine Fehlermeldung. Ich habe die Funktionen in eine externe Datei ausgelagert, darauf zuzugreifen ist auch nicht das Problem.

Er sagt mir folgendes:
Parse error: parse error, unexpected '(', expecting ')' in .../functions.php on line 8

Line 8 ist das hier in meinem Code:
PHP:
function formular_ausgabe($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"])
Der Original Code war so:
PHP:
function formular_ausgabe($name,$mail,$text)
Hab also nur die einfachen Variablen durch meine $_POST Variablen ersetzt. Aber damit scheints ein Problem zu geben.

Bestimmt fehlt einfach nur ne Klammer oder sowas... aber ich finds einfach nicht, bin noch am üben ;-)

Liebe Grüße
Joey
 
Die Zeilen davor sind in Ordnung, die hatte ich vorher allein stehen (bevor ich das Formular prüfen wollte) und da klappte alles.

Hier trotzdem nochmal der ganze Code:

PHP:
<?php
function db_connect()
{
mysql_connect("","root","root");
mysql_select_db("user");
}

function formular_ausgabe($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"])
{
echo "<h1>Registrierung</h1>";
echo "<form action='registrierung.php'";
echo "method='post'>";
echo "<input name='name'> Name<p>";
echo "<input name='vorname'> Vorname<p>";
echo "<input name='benutzername'>Benutzername<p>";
echo "<input name='passwort'>Passwort<p>";
echo "<input name='mail'>E-Mail<p>";
echo "<input type='hidden' name='auf'>";
echo "<input type='submit' value='Abschicken'>";
echo "<input type='reset' value='Neu anfangen'>";
echo "</form></body></html>";
}

function eingabe_check($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"])
{
	if ($_POST["name"]=="") $fehler = $fehler." deinen Namen";
	if ($_POST["vorname"] =="") $fehler = $fehler." deinen Vornamen";
	if ($_POST["benutzername"] == "") $fehler = $fehler." deinen Benutzernamen";
	if ($_POST["passwort"]=="") $fehler = $fehler." dein Passwort";
    if ($_POST["mail"] == "")
    {
    $fehler = $fehler." deine E-Mail Adresse";
    }
 else
 {
   if (strstr($_POST["mail"],"@") && strstr($_POST["mail"],"."))
   {
   }
 }
  	else
	{
	$fehler = $fehler." echte Mailadresse";
	}


if ($fehler =="") return1;
	else
	{
	return "Bitte gib noch<b>" . $fehler."</b> ein.<br>";
	}
}
?>
 
Code:
...

function eingabe_check(){
    if ($_POST["name"]=="") $fehler = $fehler." deinen Namen";
    if ($_POST["vorname"] =="") $fehler = $fehler." deinen Vornamen";
    if ($_POST["benutzername"] == "") $fehler = $fehler." deinen Benutzernamen";
    if ($_POST["passwort"]=="") $fehler = $fehler." dein Passwort";
    if ($_POST["mail"] == "") {
         $fehler = $fehler." deine E-Mail Adresse";
    }else{
         if (strstr($_POST["mail"],"@") && strstr($_POST["mail"],".")){
         }
    }else{
         $fehler = $fehler." echte Mailadresse";
    }


if ($fehler =="") return1;
    else
    {
    return "Bitte gib noch<b>" . $fehler."</b> ein.<br>";
    }
}
if(isset($_POST["Abschicken"])){
    eingabe_check();
}
...

so sollte es denk ich soweit gehn...
$_POST[] ist die map in der die Daten des Formulars stehen
so wie du deine Funktion definierst, erwartest du, dass diese ganzen Variablen der Funktion übergeben werden... aber du rufst die Funktion nirgends auf :)
Aber wenn du mit $_POST in der Funktion arbeitest, solltest du auch ohne Parameter direkt auf die Daten zugreifen können. Wichtig ist, dass die Funktion aufgerufen wird. Denn sonst wird der Code ja nie ausgeführt.
 
Ich habe die Funktionen in eine externe Datei ausgelagert, darauf zuzugreifen ist auch nicht das Problem.

Das, was ich euch geschrieben habe war nur die externe Datei, die aufrufende Datei zeigt nämlich keine Fehler ;-)

Natürlich werden die gesamten $_POST Daten an die Funktion übergeben.

Hier die aufrufende Datei:

PHP:
<?php
include "functions.php";
if($aktion=="check")
{
	if (eingabe_check($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"])==1)
	{
	echo "Danke, dass du dich in der MG-Statistik angemeldet hast.<p>";
	echo "Ein Admin wird deinen Account nun prüfen und dich freischalten. Du bekommst dann eine E-Mail.<p>";
	echo "<a href = 'index.html'> Zurück zur Hauptseite</a>";
	}
    else
    {
    echo eingabe_check($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"]);
    formular_ausgabe($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"]);
  }
}
 else
 {
 formular_ausgabe($_POST["name"],$_POST["vorname"],$_POST["benutzername"],$_POST["passwort"],$_POST["mail"]);
 }


db_connect ();
$passwort = md5($_POST['passwort']);
$sqlab = "insert user";
$sqlab .= "(benutzername, passwort, Name, Vorname, Mail) values";
$sqlab .= "('" . $_POST["benutzername"] . "', ";
$sqlab .= "'" . $passwort . "', ";
$sqlab .= "'" . $_POST["name"] . "', ";
$sqlab .= "'" . $_POST["vorname"] . "', ";
$sqlab .= "'" . $_POST["mail"] . "')";
mysql_query($sqlab);
$num = mysql_affected_rows();
if ($num>0)
{
echo "Danke, dass du dich in der MG-Statistik angemeldet hast.<p>";
echo "Ein Admin wird deinen Account nun prüfen und dich freischalten. Du bekommst dann eine E-Mail.<p>";
echo "<a href = 'index.html'> Zurück zur Hauptseite</a>";
}
else
{
echo "Es ist ein Fehler aufgetreten. Bitte probiere es später nocheinmal.<p>";
echo "<a href = 'index.html'> Zurück zur Hauptseite</a>";
}
?>

Die Daten werden auch übergeben, aber dann ruft eben die Funktion formular_ausgabe diese seltsame Fehlermeldung auf... und ich hab keine Ahnung warum... irgendwas stimmt mit den Klammern oder der Schreibweise der $_POST Variable nicht, wenn man sie an eine Funktion übergibt... aber ich hab auch schon versucht alles in Anführungszeichen zu setzen oder noch ne Klammer einzufügen. Die Fehlermeldung bleibt die gleiche... wenn das so nicht geht... muss ich den Inhalt von $_POST eben in ne eigene Variable schreiben und die übergeben... vielleicht geht das ja?
 
Zuletzt bearbeitet:
Ja probier das doch einfach mal da $_POST eine map von php ist mag php es vielleicht nicht, wenn sie überschrieben wird ;) aber nichts destotrotz sollte es auch im importierten code funktionieren, auf die daten in $_POST zuzugreifen. Also müsstestes du gar nichts übergeben.
 
Zurück