Anmeldescript Porbleme
Malte
- php
Hi,
ich habe ein Script geschrieben, wo der USer sich jetzt mit registrieren kann. Mein Problem ist, ich bekomme obwohl alle eingaben stimme immer wieder den Satz Fehler bei folgenden Punkten. Aber er sagt mir nicht wo genau
Außerdem würde ich, wenn alles Fertig ist den USer weiter leiten auf login.php aber ich habe oben schon ausgaben und daher klappt das mit einem header nicht, könnt ihr mir helfen?
Die daten werden aber in einer DB gespeichert.
Das ist nur ein Asschnitt der Seite, die ist sonst zu lang
<?php error_reporting(E_ALL);
function check_email($email) {
//author: Christian Kruse, CK1@wwwtech.de
//Quelle: http://selfaktuell.teamone.de/tippstricks/programmiertechnik/email/index.html
// RegEx begin
$nonascii = "\x80-\xff"; # Non-ASCII-Chars are not allowed
$nqtext = "[^\\\\$nonascii\015\012\"]";
$qchar = "\\\\[^$nonascii]";
$protocol = '(?:mailto:)';
$normuser = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
$quotedstring = "\"(?:$nqtext|$qchar)+\"";
$user_part = "(?:$normuser|$quotedstring)";
$dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
$dom_subpart = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
$dom_tldpart = '[a-zA-Z]{2,5}';
$domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";
$regex = "$protocol?$user_part\@$domain_part";
// RegEx end
return preg_match("/^$regex$/",$email);
}
?>
<td colspan="3" class="inhalt">
<?php
if(isset($_POST["anmelden"]))
{
$fehler = array();
$username = $_POST["username"];
$password = $_POST["password"];
$passwordw = $_POST["password"];
$email = $_POST["email"];
$country = $_POST["land"];
$airbase = $_POST["airbase"];
//Ueberprüen des Passworts auf zulaesige Zeichen
if (!preg_match("/^[a-zA-Z0-9]*$/", $password)) $fehler[]= "Das Passwort darf nur aus Buchstaben, Zahlen und _ - bestehen!";
//Testen ob im Passwortfeld was eingeben wurden
if($password == "") $fehler[]= "Bitte geben Sie ein Passwort ein!";
//Testet den Usernamen auf zulaesige Zeichen
if (!preg_match("/^[a-zA-Z0-9]*$/", $username)) $fehler[]= "Der Username darf nur aus Buchstaben, Zahlen und _ - bestehen!";
//Testen ob im Usernamefeld was eingeben wurde
if($username == "") $fehler[]= "Bitte geben Sie einen Usernamen an!";
//Testet den Namen der AirBase auf zulaesige Zeichen
if (!preg_match("/^[a-zA-Z0-9]*$/", $airbase)) $fehler[]= "Der AirBase Name darf nur aus Buchstaben, Zahlen und _ - bestehen!";
//Testen ob ein Land ausgewählt wurde
if($country == '0') $fehler[]= "Bitte wählen Sie ein Land aus!";
//Testet ob im Airbasefeld was angebebn wurde
if($airbase == "") $fehler[]= "Bitte einen Name für Ihrer AirBase angeben!";
//Testen ob die Password Widh. mit dem Password übereinstimmt
if($passwordw != $password) $fehler[]= "Die Passwort Widhl. muss mit dem Passwort übereinstimmen!";
//Testen der EMailAdresse
if(!check_email($email)) $fehler[] = "Bitte eine richtige E-Mail Adresse eingeben!";
if (count($fehler) == 0) {
$dbName = "air-war";
$dbHost = "localhost";
$dbUser = "root";
$dbPW = "";
if (!(($dblink = mysql_connect($dbHost,$dbUser,$dbPW)) && (mysql_select_db($dbName,$dblink)))) die(mysql_error());
mysql_query("INSERT INTO user (username, airbase, country, password, email)
VALUES('$username', '$airbase', '$country', '$password', '$email')") or
die(mysql_error());
echo "GS";
}
echo "<span style=\"color:red\">Fehler bei Folgenden Punkten:<ul>";
for ($i = 0; $i < count($fehler); $i++) echo "<li>".$fehler[$i];{
}
echo "</ul></span>";
}
?>
<center>
<b><font size="4">Anmeldung bei Air - War</font></b><br><br>
<table>
<form action="<?php $_SERVER["PHP_SELF"] ?>" method="post">
</font>
<tr>
<td><font size="4">Username:</font></td><td>
<font size="4"><input type="text" name="username" class="eingabe" size="20"></font></td>
</tr>
<tr>
<td><font size="4">Passwort:</font></td><td>
<font size="4"><input type="password" name="password" class="eingabe" size="20"></font></td>
</tr>
<tr>
<td><font size="4">Passwort Widh.:</font></td><td>
<font size="4"><input type="password" name="passwordw" class="eingabe" size="20"></font></td>
</tr>
<tr>
<td><font size="4">E-Mail:</font></td><td>
<font size="4"><input type="text" name="email" class="eingabe" size="20"><br><br>
</font></td>
</tr>
<tr>
<td><font size="4">Land:</font></td><td>
<font size="4"><select name="land">
<option value="0">Bitte wählen...</option>
<option value="Amerika">Amerika</option>
<option value="China">China</option>
<option value="Russland">Russland</option>
</select></font></td>
</tr>
<tr>
<td><font size="4">Name der Air Base:</font></td><td>
<font size="4"><input type="text" name="airbase" class="eingabe" size="20"></font></td>
</tr>
<tr>
<td><font size="4"><br></b><input type="submit" class="submit" name="anmelden" value="Anmelden"</td></font><td>
<font size="4"><br></b><input type="reset" class="submit" name="reset" value="Abbrechen"></font></td>
</tr>
</form>
</table>
</center>
</td>
Danke, habe das Problem schon gefunden...
:-)
Hi Malte,
Auch wenn du den fehler schon gefunden hast,
Außerdem würde ich, wenn alles Fertig ist den USer weiter leiten auf login.php aber ich habe oben schon ausgaben und daher klappt das mit einem header nicht, könnt ihr mir helfen?
header("Location: {$_SERVER['REQUEST_URI']}");
Nachteil: POSTs gehen verloren(wenn es welche gibt), da hilft dir dann wirklich nur HTTP 307.
Marian