[PHP]Formulardaten prüfen

chriskool

Lt. Junior Grade
Registriert
Mai 2003
Beiträge
456
Hallo, ich bins mal wieder :freak:
Hab folgenden Code:
PHP:
<html>
<?php

include("dbconnect.php");
include("header.php");
include("left.php");

$ip= getenv('REMOTE_ADDR');
$host = gethostbyaddr($ip);
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);

?>


<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Benutzername<INPUT type="text" name="nick" size="20" maxlength="20" align="left"><br>
E-Mail<INPUT type="text" name="mail" size="30" maxlength="30" align="left"><br>
<p>Passwort<INPUT type="password" name="pass" size="20" maxlength="20" align="left"><br>
Passwort wiederholen<INPUT type="password" name="pass" size="25" maxlength="25" align="left"></p>
<p>
Newsletter abonnieren<br>
<input type="radio" name="newsletter" value="html" checked="true">HTML
<input type="radio" name="newsletter" value="text">Text
<input type="radio" name="newsletter" value="kein">Keinen Newsletter
</p>
<INPUT type="submit" name="submit" value="Registrieren">
<p>
<?php

?>
</p>
</html>

Jetzt möchte ich mit strlen() und pregmatch() die Formulareingaben prüfen. Nur klappt das irgendwie net so recht, liegt wohl an dem $_SERVER['PHP_SELF']; ?. Denn ansonsten hatte ich das immer ganz gut hinbekommen.
Das Problem ist, dass ja beim Laden die Seite bereits einmal "ausgeführt" wird, d.h. die Variablen haben zwar noch keine Werte, werden aber trotzdem überprüft.
Wie könnte ich das am besten lösen?
 
dein button hat ja nen namen

Code:
if(isset($_POST['submit'])) ...
 
Hallo chriskool,

ich habe dir mal nen etwas überarbeiteten code angehängt, so sollte es gehen. Du musst die html tags sinnvoller mit php Bedingungen kapseln! Für den Status von Formularen bieten sich Formular- Variablen vom Typ hidden an die du dann gut auswerten kannst, ich hab die unten mal status genannt!


PHP:
<html>
<head>
<title>Registrierung</title>
</head>
<body>
<?php
include("dbconnect.php");
include("header.php");
include("left.php");

$ip= getenv('REMOTE_ADDR');
$host = gethostbyaddr($ip);
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i:s",$timestamp);


if(!isset($_POST["status"]))
{ ?>
<form method="post" action="<?=$PHP_SELF?>" name="registrierung">
Benutzername<INPUT type="text" name="nick" size="20" maxlength="20" align="left"><br>
E-Mail<INPUT type="text" name="mail" size="30" maxlength="30" align="left"><br>
<p>Passwort<INPUT type="password" name="pass" size="20" maxlength="20" align="left"><br>
Passwort wiederholen<INPUT type="password" name="pass" size="25" maxlength="25" align="left"></p>
<p>
Newsletter abonnieren<br>
<input type="radio" name="newsletter" value="html" checked="true">HTML
<input type="radio" name="newsletter" value="text">Text
<input type="radio" name="newsletter" value="kein">Keinen Newsletter
</p>
<INPUT type="submit" name="submit" value="Registrieren">
<input type="hidden" name="status" value="pruefen">
</form>
<? }

if($_POST["status"] =="pruefen")
{
// hier deine Auswertung und pruefzeugs reinschreiben....
}
?>
</body>
</html>

Gruß bbforce
 
Zuletzt bearbeitet:
Danke, leider bringt das Script jetzt folgenden Parse-Error
Parse error: parse error, unexpected ';', expecting ')' in /var/www/html/puretunes/tune4/register_member.php on line 32

Find da aber weit und breit nix, was diese Fehlermeldung verursachen könnte.
 
Moin,

also ich hab das Script eben nochmal getestet, funktioniert soweit ohne Probleme, kommentier doch bitte mal alle includes wie folgt aus:

//include("dbconnect.php");
//include("header.php");
//include("left.php");

Ist der Fehler dann weg liegts an einer extern eingebundenen Datei.

Hast du denn das gesamte Script von mir in eine leere php - Datei kopiert? Wenn nicht versuch das nochmal!

Gruß bbforce
 
Zurück
Oben