aktuelle.kurse/oldies/m133/4_Modulinhalte_und_Uebungen/B_Aufgabe_Formularvalidierung_JavaScript_PHP/2_1_Auftrag_Validierung/loesung/index.php

160 lines
6.8 KiB
PHP
Raw Normal View History

2022-02-23 22:44:33 +01:00
<?php
// Initialisierung
$error = '';
$firstname = $lastname = $email = $username = '';
// Wurden Daten mit "POST" gesendet?
if($_SERVER['REQUEST_METHOD'] == "POST"){
// Ausgabe des gesamten $_POST Arrays
echo "<pre>";
print_r($_POST);
echo "</pre>";
2022-03-17 11:19:26 +01:00
// vorname vorhanden, mindestens 1 Zeichen und maximal 30 Zeichen lang
if(isset($_POST['firstname']) && !empty(trim($_POST['firstname'])) && strlen(trim($_POST['firstname'])) <= 30){
2022-02-23 22:44:33 +01:00
// Spezielle Zeichen Escapen > Script Injection verhindern
$firstname = htmlspecialchars(trim($_POST['firstname']));
} else {
// Ausgabe Fehlermeldung
$error .= "Geben Sie bitte einen korrekten Vornamen ein.<br />";
}
2022-03-17 11:19:26 +01:00
// nachname vorhanden, mindestens 1 Zeichen und maximal 30 zeichen lang
if(isset($_POST['lastname']) && !empty(trim($_POST['lastname'])) && strlen(trim($_POST['lastname'])) <= 30){
// Spezielle Zeichen Escapen > Script Injection verhindern
$lastname = htmlspecialchars(trim($_POST['lastname']));
} else {
// Ausgabe Fehlermeldung
$error .= "Geben Sie bitte einen korrekten Nachnamen ein.<br />";
}
// emailadresse vorhanden, mindestens 1 Zeichen und maximal 100 zeichen lang
if(isset($_POST['email']) && !empty(trim($_POST['email'])) && strlen(trim($_POST['email'])) <= 100){
$email = htmlspecialchars(trim($_POST['email']));
// korrekte emailadresse?
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false){
$error .= "Geben Sie bitte eine korrekte Email-Adresse ein<br />";
}
} else {
// Ausgabe Fehlermeldung
$error .= "Geben Sie bitte eine korrekte Email-Adresse ein.<br />";
}
// benutzername vorhanden, mindestens 6 Zeichen und maximal 30 zeichen lang
if(isset($_POST['username']) && !empty(trim($_POST['username'])) && strlen(trim($_POST['username'])) <= 30){
$username = trim($_POST['username']);
// entspricht der benutzername unseren vogaben (minimal 6 Zeichen, Gross- und Kleinbuchstaben)
if(!preg_match("/(?=.*[a-z])(?=.*[A-Z])[a-zA-Z]{6,}/", $_POST['username'])){
$error .= "Der Benutzername entspricht nicht dem geforderten Format.<br />";
}
} else {
// Ausgabe Fehlermeldung
$error .= "Geben Sie bitte einen korrekten Benutzernamen ein.<br />";
}
// passwort vorhanden, mindestens 8 Zeichen
if(isset($_POST['password']) && !empty(trim($_POST['password']))){
$password = trim($_POST['password']);
//entspricht das passwort unseren vorgaben? (minimal 8 Zeichen, Zahlen, Buchstaben, keine Zeilenumbrüche, mindestens ein Gross- und ein Kleinbuchstabe)
if(!preg_match("/(?=^.{8,}$)((?=.*\d+)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$/", $_POST['password'])){
$error .= "Das Passwort entspricht nicht dem geforderten Format.<br />";
}
} else {
// Ausgabe Fehlermeldung
$error .= "Geben Sie bitte einen korrekten Nachnamen ein.<br />";
}
2022-02-23 22:44:33 +01:00
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Registrierung</title>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.2/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<h1>Registrierung</h1>
<p>
Bitte registrieren Sie sich, damit Sie diesen Dienst benutzen können.
</p>
<?php
// Ausgabe der Fehlermeldungen
if(strlen($error)){
echo "<div class=\"alert alert-danger\" role=\"alert\">" . $error . "</div>";
}
?>
<form action="" method="post">
<!-- vorname -->
<div class="form-group">
<label for="firstname">Vorname *</label>
<input type="text" name="firstname" class="form-control" id="firstname"
value="<?php echo $firstname ?>"
placeholder="Geben Sie Ihren Vornamen an."
maxlength="30"
required="true">
</div>
2022-03-17 11:19:26 +01:00
<!-- nachname -->
2022-02-23 22:44:33 +01:00
<div class="form-group">
<label for="lastname">Nachname *</label>
<input type="text" name="lastname" class="form-control" id="lastname"
value="<?php echo $lastname ?>"
2022-03-17 11:19:26 +01:00
placeholder="Geben Sie Ihren Nachnamen an"
maxlength="30"
required="true">
2022-02-23 22:44:33 +01:00
</div>
2022-03-17 11:19:26 +01:00
<!-- email -->
2022-02-23 22:44:33 +01:00
<div class="form-group">
<label for="email">Email *</label>
<input type="email" name="email" class="form-control" id="email"
value="<?php echo $email ?>"
2022-03-17 11:19:26 +01:00
placeholder="Geben Sie Ihre Email-Adresse an."
maxlength="100"
required="true">
2022-02-23 22:44:33 +01:00
</div>
2022-03-17 11:19:26 +01:00
<!-- benutzername -->
2022-02-23 22:44:33 +01:00
<div class="form-group">
<label for="username">Benutzername *</label>
<input type="text" name="username" class="form-control" id="username"
value="<?php echo $username ?>"
2022-03-17 11:19:26 +01:00
placeholder="Gross- und Keinbuchstaben, min 6 Zeichen."
maxlength="30" required="true"
pattern="(?=.*[a-z])(?=.*[A-Z])[a-zA-Z]{6,}"
title="Gross- und Keinbuchstaben, min 6 Zeichen.">
2022-02-23 22:44:33 +01:00
</div>
2022-03-17 11:19:26 +01:00
<!-- password -->
2022-02-23 22:44:33 +01:00
<div class="form-group">
<label for="password">Password *</label>
<input type="password" name="password" class="form-control" id="password"
2022-03-17 11:19:26 +01:00
placeholder="Gross- und Kleinbuchstaben, Zahlen, Sonderzeichen, min. 8 Zeichen, keine Umlaute"
pattern="(?=^.{8,}$)((?=.*\d+)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
title="mindestens einen Gross-, einen Kleinbuchstaben, eine Zahl und ein Sonderzeichen, mindestens 8 Zeichen lang,keine Umlaute."
required="true">
2022-02-23 22:44:33 +01:00
</div>
<button type="submit" name="button" value="submit" class="btn btn-info">Senden</button>
<button type="reset" name="button" value="reset" class="btn btn-warning">Löschen</button>
</form>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>