[PHP]Formulardaten prüfen

chriskool

Lt. Junior Grade
Dabei seit
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?
 

HoRnominatoR

Lt. Junior Grade
Dabei seit
Dez. 2004
Beiträge
302
dein button hat ja nen namen

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

bbforce

Ensign
Dabei seit
Sep. 2003
Beiträge
204
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:

bbforce

Ensign
Dabei seit
Sep. 2003
Beiträge
204
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
 
Top