Hallo,
hatte ja schonmal eine Diskussion, wie ich ein Registrierungsform aufbaue (https://www.html.de/threads/einschraenkungen-registrierungs-seite.56851/). Habe mich nun dazu entschlossen, beim Namen einfach alle Freiheiten zu gewähren, da man ansonsten immer Leute ausschließen würde, die Eingaben werden aber durch htmlspecialchars, trim und stripslashes geschickt, um XSS zu vermeiden.
Habe mich nun also an den Testaufbau von w3schools gehalten, der wie folgt aufgebaut ist:
Das klappt soweit auch gut, allerdings möchte ich den Bereich "Your Input" anders haben. Wenn bei allen Werten valide Werte eingegeben wurden, möchte ich zu einer anderen Seite verlinken, auf der steht, dass der Nutzer nun registriert ist und eine Bestätigungsmail erhält, um sich einzuloggen. Außerdem sollen die Kundendaten auch in einer Datenbank aufgenommen werden.
Den Teil mit der Datenbank bekomme ich hin, wie kann ich nur unterscheiden, wann auf der Registrierungsseite noch Fehlermeldungen angegeben werden und wann zur Bestätigungsseite weitergeleitet wird?
Danke vorab!
hatte ja schonmal eine Diskussion, wie ich ein Registrierungsform aufbaue (https://www.html.de/threads/einschraenkungen-registrierungs-seite.56851/). Habe mich nun dazu entschlossen, beim Namen einfach alle Freiheiten zu gewähren, da man ansonsten immer Leute ausschließen würde, die Eingaben werden aber durch htmlspecialchars, trim und stripslashes geschickt, um XSS zu vermeiden.
Habe mich nun also an den Testaufbau von w3schools gehalten, der wie folgt aufgebaut ist:
Code:
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
E-mail: <input type="text" name="email" value="<?php echo $email;?>">
<span class="error">* <?php echo $emailErr;?></span>
<br><br>
Website: <input type="text" name="website" value="<?php echo $website;?>">
<span class="error"><?php echo $websiteErr;?></span>
<br><br>
Comment: <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
<br><br>
Gender:
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">Female
<input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
<span class="error">* <?php echo $genderErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;
?>
</body>
</html>
Das klappt soweit auch gut, allerdings möchte ich den Bereich "Your Input" anders haben. Wenn bei allen Werten valide Werte eingegeben wurden, möchte ich zu einer anderen Seite verlinken, auf der steht, dass der Nutzer nun registriert ist und eine Bestätigungsmail erhält, um sich einzuloggen. Außerdem sollen die Kundendaten auch in einer Datenbank aufgenommen werden.
Den Teil mit der Datenbank bekomme ich hin, wie kann ich nur unterscheiden, wann auf der Registrierungsseite noch Fehlermeldungen angegeben werden und wann zur Bestätigungsseite weitergeleitet wird?
Danke vorab!