Mal wieder Sicherheit bei $_POST

spikaner

Quereinsteiger @ php
Habe mir mal folgendes Registrierungsformular zusammengebastellt und wollte fragen ob es 1. Sicher genug ist und
2. Wie ich das Script so umbauen kann das Es erst nach kommpletter Abarbeitung die Fehler ausgiebt und dann erst stirbt.
PHP:
<table border="1" width="300">
	<tr>
		<td>
		<form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>">
			<p align="center"><br><u><b><font size="4">Registrierungsformular:</font></b></u></p>
			<p><input type="text" name="name" size="20"> Name:</p>
			<p><input type="text" name="email" size="20"> Email-Adresse:</p>
			<p><input type="password" name="passwort" size="20">Passwort:</p>
			<p><input type="password" name="passwort1" size="20"> Passwort wiederholen</p>
			<p align="center"><input type="submit" value="Absenden" name="absenden"><input type="reset" value="Zurücksetzen" name="B2"></p>
		</form>
	</tr>
</table>

<?php
if(isset($_POST["absenden"]))
{
    // Post sachen auf schadcode überprüfen und neue variable zuweisen
    if(!eregi("^[a-zA-Z0-9]+$",$_POST["name"]))
    {
        // Variable enthält Sonderzeichen
        echo "Sonderzeichen im Namen sind nicht erlaubt!";
        die;
    }
    else
    {
        $nameneu = $_POST["name"] ;
        $laengename = strlen($nameneu);
        If($laengename < 6)
        {
            echo "Name ist zu kurz!";
            die;
        }
    }
    if(!eregi("^[a-zA-Z0-9]+$.@",$_POST["email"]))
    {
        echo "Sonderzeichen in der EmailAdresse sind nicht erlaubt!";
        die;
    }
    else
    {
        $emailneu = $_POST["email"];
    }
    if(!eregi("^[a-zA-Z0-9]+$",$_POST["passwort"]))
    {
        echo "Sonderzeichen im Passwort sind nicht erlaubt!";
        die;
    }
    else
    {
        $laengepasswort = strlen($_POST["passwort"]);
        If($laengename < 6)
        {
            echo "Passwort ist zu kurz!";
            die;
        }
        If($_POST["passwort"] == $_POST["passwort1"])
        {
            $passwortneu = $_POST["passwort"];
        }
        else
        {
            echo "Die Passwörter stimmen nicht überein";
            die;
        }

    }

    // Hier nun db eintrag Ausgabe etc.

}


?>

mfg Spikaner

P.S. 3 Problem eben bemerkt was ist an if(!eregi("^[a-zA-Z0-9-_@.]+$",$_POST["email"])) falsch es kommt immer Sonderzeichen in der EmailAdresse sind nicht erlaubt!
Warning: eregi() [function.eregi]: REG_ERANGE
 
Zuletzt bearbeitet:
thx funktioniert schon mal prima, nur wie muß ich das Script umstellen um alle Fehlermeldungen nach der Durcharbeitung des scriptes auf einmal zu bekommen?

PHP:
<?php
if(isset($_POST["absenden"]))
{
    // Post sachen auf schadcode überprüfen und neue variable zuweisen
    if(!eregi("^[a-zA-Z0-9]+$",$_POST["name"]))
    {
        // Variable enthält Sonderzeichen
        echo "Sonderzeichen im Namen sind nicht erlaubt!";
        die;
    }
    else
    {
        $nameneu = $_POST["name"];
        $laengename = strlen($nameneu);
        If($laengename < 5)
        {
            echo "Name ist zu kurz!";
            die;
        }
    }
    if(!eregi("^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})$",$_POST["email"]))
    {
        echo "Sonderzeichen in der EmailAdresse sind nicht erlaubt!";
        die;
    }
    else
    {
        $emailneu = $_POST["email"];
    }
    if(!eregi("^[a-zA-Z0-9]+$",$_POST["passwort"]))
    {
        echo "Sonderzeichen im Passwort sind nicht erlaubt!";
        die;
    }
    else
    {
        $laengepasswort = strlen($_POST["passwort"]);
        If($laengename < 6)
        {
            echo "Passwort ist zu kurz!";
            die;
        }
        If($_POST["passwort"] == $_POST["passwort1"])
        {
            $passwortneu = $_POST["passwort"];
        }
        else
        {
            echo "Die Passwörter stimmen nicht überein";
            die;
        }

    }

// Testausgabe
    echo "name = ";
    echo $nameneu;
    echo "<br>";
    echo "email = ";
    echo $emailneu;
    echo "<br>";
    echo "passwort = ";
    echo $passwortneu;
    echo "<br>";

// link erstellung

    $i = rand(100000,999999);
    $zufsallhash = md5($i);
    echo "zufallshash = ";
    echo $zufsallhash;
    echo "<br>";
    $link = "http://www.webspace.de/register.php?register=".$zufsallhash."";
    echo "link = ";
    echo $link;
    echo "<br>";
// dbeintrag

// in arbeit...

// mail versand
    $registration_empfeanger = $emailneu;             // Die Variable, die die Empfängeradresse beinhaltet.
    $registration_betreff = "Anmeldung auf bla.de ";
    $registration_text = 
" Hallo,
Du hast dich grade erfolgreich bei \"bla.de\" angemeldet.
Um die Registrierung abzuschleißen klicke bitte folgenden Link.
".$link."
Hier sind die nettesten leute, die sich immer bei MCDonalds den Wamps vollhauen.

MfG
 - - - - - - -
TheSystemBigMac
";

//vorest net benötigt    mail($registration_empfeanger, $registration_betreff, $registration_text, "FROM: bla.de<noreply@bla.de>");

// mail versand ende

echo $registration_empfeanger;
echo "<br>";
echo $registration_betreff;
echo "<br>";
echo $registration_text;
echo "<br>";

include("fotter.php");
die;

// ausgabe du erhältst nee email stirb...


}


?>

mfg Spikaner
 
Zuletzt bearbeitet:
Zurück