nach der überprüfung von Daten aus einem Anmeldeformular, redirect zu einer anderen Seite anmelden
ich bin neu in php und mysql. Ich bin versucht, erstellen Sie eine Benutzer-Registrierung-Formular, überprüfen Sie die Daten, und dann redirect auf eine login-Seite, wo Sie können, geben Sie Ihren Benutzernamen und Ihr Passwort, um sich anzumelden. ich habe geschrieben die codes, aber aus irgendeinem Grund bin ich nicht in der Lage, die Verwendung der header() richtig.
Hier ist mein code bisher:
$userErr= $passErr= $passErrc= $firstErr= $lastErr= $middle= $addErr= $cityErr= $stateErr=$zipErr= $emailErr= $phoneErr= $passMatchErr="";
$userID= $password= $pass_conf= $firstName= $lastName= $middle= $address= $city= $state= $zip= $email= $phone="";
//Validate the form
//use trim() function to remove unnecessary characters such as extra space, tab, newline,
//use stripslashes(() to remove backslashes
//use htmlspecialchars() for security
function test_input($data)
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
//validating the form to see all required fields are entered
if (empty($_POST["userID"]))
{
$userErr = "User ID is required";
}
else
{
$userID = test_input($_POST["userID"]);
}
if (empty($_POST["password"]))
{
$passErr = "Password is required";
}
else
{
$password = test_input($_POST["password"]);
}
if (empty($_POST["pass_conf"]))
{
$passErrc = "Confirm your password";
}
else
{
$pass_conf = test_input($_POST["pass_conf"]);
}
if (empty($_POST["firstName"]))
{
$firstErr = "First Name is required";
}
else
{
$firstName = test_input($_POST["firstName"]);
}
if (empty($_POST["lastName"]))
{
$lastErr = "Last Name is required";
}
else
{
$lastName = test_input($_POST["lastName"]);
}
if (empty($_POST["middle"]))
{
$middle = "";
}
else
{
$middle= test_input($_POST["middle"]);
}
if (empty($_POST["address"]))
{
$addErr = "Address is required";
}
else
{
$address = test_input($_POST["address"]);
}
if (empty($_POST["city"]))
{
$cityErr = "City is required";
}
else
{
$city = test_input($_POST["city"]);
}
if (empty($_POST["state"]))
{
$stateErr = "State is required";
}
else
{
$state = test_input($_POST["state"]);
}
if (empty($_POST["zip"]))
{
$zipErr = "Zip is required";
}
else
{
$zip = test_input($_POST["zip"]);
}
if (empty($_POST["email"]))
{
$emailErr = "Email is required";
}
else
{
$email = test_input($_POST["email"]);
}
if (empty($_POST["phone"]))
{
$phoneErr = "";
}
else
{
$phone = test_input($_POST["phone"]);
}
}
else
{
if($password != $pass_conf){
$passMathErr= "Passwords do not match. Please, go back and re-enter the passwords!";
//die($passMathErr);
} else{
//perform sql query to insert the data
$sql="insert into users values('$userID', '$password', '$firstName', '$lastName', '$middle', '$address', '$city', '$state', '$zip', '$email', '$phone')";
$result=mysql_query($sql, $connection);
header("Location:login.html");
}
}
?>
<html lang="em">
<head>
<title> Registration </title>
<style type="text/css">
h1{
text-align: left;
font-weight:bold;
font-size: 2em;
color:#FFFF99;
word-spacing: 0.3em;
letter-spacing:0.1em;
text-decoration:underline;
}
body{
background-color: #421818;
}
.txtinput{
margin-left:150px;
}
table{
font-color:#99FF00;
}
.error {
color: #FF0000;
}
</style>
</head>
<body>
<h1> Registration Form </h1><br>
<form name="reg" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<table style="color:#99FF00" border=0 cellspacing=0 cellpadding=2>
<tr>
<td>User ID * <td><input type="text" name="userID"/>
<span class="error"><?php echo $userErr;?></span>
</tr>
<tr>
<td>Password *<td><input type="password" name="password" />
<span class="error"><?php echo $passErr;?></span>
</tr>
<tr>
<td>Confirm Password *<td><input type="password" name="pass_conf" />
<span class="error"><?php echo $passErrc;?></span>
</tr>
<tr>
<td>First Name *<td><input type="text" name="firstName" />
<span class="error"><?php echo $firstErr;?></span>
</tr>
<tr>
<td>Last Name *<td><input type="text" name="lastName" />
<span class="error"><?php echo $lastErr;?></span>
</tr>
<tr>
<td>Middle<td><input type="text" name="middle" />
<span class="error"><?php echo $middle;?></span>
</tr>
<tr>
<td>Address *<td><input type="text" name="address" />
<span class="error"><?php echo $addErr;?></span>
</tr>
<tr>
<td>City *<td><input type="text" name="city" />
<span class="error"><?php echo $cityErr;?></span>
</tr>
<tr>
<td>State *<td><input type="text" name="state" />
<span class="error"><?php echo $cityErr;?></span>
</tr>
<tr>
<td>Zip *<td><input type="text" name="zip" />
<span class="error"><?php echo $zipErr;?></span>
</tr>
<tr>
<td>Email *<td><input type="text" name="email"/>
<span class="error"><?php echo $emailErr;?></span>
</tr>
<tr>
<td>Phone<td><input type="text" name="phone" />
<span class="error"><?php echo $phone;?></span>
</tr>
</table>
<div class="txtinput">
<input type="submit" name="submit" value="Register"/>
</div>
</form>
</body>
</html>
- Platz nach Position: vielleicht?
- ich habe es versucht und die Daten in die Datenbank eingefügt, aber es ist noch nicht Regie zu meinem login-Seite. es hält die Anzeige der Datei-Registrierung
- <?php include("dbConfig.php"); // Variablen definieren und festlegen, dass leere Werte $userErr= $passErr=.... Ich habe die include-Anweisung am Anfang, wäre das halt die header-Funktion von der Arbeit, vielleicht?
- Nein. Aber jeder Ausgang löschen, bevor Sie Ihre header-Befehl. Überprüfen gibt es keine Leerzeichen vor oder nach dem <? ?> - tags in Ihrer include-Datei. (Nicht einmal ein Zeilenumbruch nach dem schließenden ?>)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie, um zu beenden aus dem code-segment, sobald die Steuerung an eine andere Seite. Ansonsten wird der folgende code wird ausgeführt. So verwenden
exit;
nach dem header().Ich könnte falsch sein, aber ein Blick auf die Struktur des if - /else-Anweisungen wie es aussieht, Sie würden immer nur senden Sie die Kopfzeile, wenn die request-Methode ist POST NICHT. (Dh. Sieht aus wie seine in der else-Abschnitt.) Ich denke, dass Ihr an der falschen Stelle.
Ist es dies sonst, dass ich nur denke, muß entfernt werden. (Obwohl ich bin mir nicht sicher, wie Sie Ihre überprüfung beendet die Umleitung mit Ihrem aktuellen code)
versuchen Sie es mit ob_start(); am Anfang der Datei und ob_end_flush(); am Ende der Datei.
ok Sie sagte, dass Ihre Daten in die db normal, aber dein header() nicht umleiten.
Der einzige Weg dies geschehen kann, ist für einige Zeichen auf echo vor dem header() erfolgt.
Stellen Sie sicher, dass nichts gedruckt wird, bevor header().
Stellen Sie sicher, es ist keine Stückliste element am Anfang der Seite.
entfernen Sie einfach den else-Teil der Haupt-if-Anweisung und die Passwort Bestätigung Teil setzen Sie in der main if-Anweisung :
entfernen Sie die oben """ - Teil und fügen Sie ihn innerhalb main if-Anweisung
Ersetzen Sie den code mit dieser....
Den Fehler ist - Sie sind bei der Ausführung Ihrer redirect Bedingung nur, wenn der
ANGEFORDERTE Methode ist NICHT GLEICH POST.
Also der obige code wird ausgeführt, wenn die request-Methode ist POST & das eingegebene Kennwort entspricht dem Passwort bestätigen, dann leiten Sie den Benutzer auf die login-Seite. Würde es jetzt funktionieren!