pdo statements
Registrieren
registrieren.php
<?php
Variable timestamp setzen
$timestamp=date("Y-m-d H:i:s");
Variable postmaster definieren
$postmaster="<dein webseitenname>";
Prüfen ob User eingeloggt ist oder nicht
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
{
header("Location:index.php?page=1");
exit();
}
Freischalt Code erstellen
function CodeString($length=12)
{
return substr(str_shuffle(str_repeat($x='1234567890987654321', ceil($length/strlen($x)))),1,$length);
}
Benutzende Variablen auf leere Werte setzen
$user_name=$email=$password=$confirm_password="";
$username_err=$mail_err=$password_err=$confirm_password_err="";
Formulardaten werden verarbeitet, wenn das Formular gesendet wird einfügen
POST für Username prüfen
$postusername=isset($_POST['username']) ? $_POST['username'] : "";
if (empty($postusername))
{
$username_err="Feld Username ist leer!";
}
elseif ((strlen(trim($postusername)) < 6) || (strlen(trim($postusername))) > 40)
{
$username_err="Username 6 bis 40 Zeichen!";
}
else
{
$user_name=trim($postusername);
if ($user_name === false)
{
$username_err="Dies ist kein Username!";
}
und prüfen ob Username schon vorhanden ist
Datenbank abfrage
$stmt=$pdo->prepare("SELECT username FROM usertable WHERE username=:username");
$stmt->bindParam(":username", $param_username, PDO::PARAM_STR);
$param_username=$user_name;
if ($stmt->execute())
{
Daten verarbeiten
if ($stmt->rowCount() == 1)
{
$username_err="Dieser Username ist schon vorhanden!";
}
}
}
POST für eMail prüfen
$postmail=isset($_POST['email']) ? $_POST['email'] : "";
if (empty($postmail))
{
$mail_err="Feld eMail ist leer!";
}
elseif ((strlen(trim($postmail)) < 8) || (strlen(trim($postmail))) > 75)
{
$mail_err="eMail 8 bis 75 Zeichen!";
}
else
{
$email=filter_var(trim($postmail), FILTER_VALIDATE_EMAIL);
if (!preg_match("/^[a-z]{2,}[w.+-]{1,}+@[^@]+.[a-z]{2,3}$/i",$email))
{
$email_err="Bitte eine valide eMail-Adresse eingeben";
}
if ($email === false)
{
$mail_err="Dies ist keine eMail-Adresse!";
}
und prüfen ob eMail schon vorhanden ist
Datenbank abfrage
$stmt=$pdo->prepare("SELECT usermail FROM usertable WHERE usermail=:usermail");
$stmt->bindParam(":usermail", $param_usermail, PDO::PARAM_STR);
$param_usermail=$email;
if ($stmt->execute())
{
Daten verarbeiten
if ($stmt->rowCount() == 1)
{
$mail_err="Diese eMail-Adresse ist schon vorhanden!";
}
}
}
POST für Passwort prüfen einfügen
POST für Passwort wiederholen prüfen einfügen
Passwörter auf übereinstimmung prüfen einfügen
Freischalt-Code als Variable
$code=IntVal(CodeString());
Keine Fehler Inhalt ausführen
if (empty($username_err) && empty($password_err) && empty($confirm_password_err) && empty($mail_err))
{
Formulareingaben und Code für eMail sortieren
$subject=$postmaster."\n";
$empfaenger=trim($email);
$text="Hallo: ".htmlspecialchars($user_name)."\n";
$text.="Betreff:Registrierung\n";
$text.="Dein Freischaltcode: ".$code;
Formulareingaben versenden
mail($empfaenger,$subject,$text);
Formulareingaben in Datenbank schreiben
$stmt=$pdo->prepare("INSERT INTO usertable (username, usermail, userpass, datum, code) VALUES(:param_username, :param_mail, :param_password, :param_datum, :param_cod)");
$stmt->bindParam(":param_username", $user_name, PDO::PARAM_STR);
$stmt->bindParam(":param_mail", $email, PDO::PARAM_STR);
$stmt->bindParam(":param_password", $param_password, PDO::PARAM_STR);
$stmt->bindParam(":param_datum", $timestamp, PDO::PARAM_STR);
$stmt->bindParam(":param_cod", $code, PDO::PARAM_INT);
$param_password=password_hash($password, PASSWORD_DEFAULT);
if ($stmt->execute())
{
header("Location:index.php?page=90&message=reginf");
}
else
{
echo"Da ist was schief gelaufen!";
}
Keine Fehler Ende
}
Formulardaten wurden gesendet ende
}
?>
Wie soll das Formular wo hin
<form method="post" action="<?php $_SERVER["PHP_SELF"];?>">
Feld für Username
<div class="form-face">
<label for="name">Username:<span>*</span></label>
<span class="fehler"><?php echo $username_err;?></span>
<input pattern=".{6,40}" required="required" placeholder="6-40 Zeichen" type="text" id="username" name="username" maxlength="42" class="form-control">
</div>
Feld für eMail variante 2 einfügen
Feld für Passwort
<div class="form-face">
<label for="passwort">Passwort:<span>*</span></label>
<span class="fehler"><?php echo $password_err;?></span>
<input pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{16,60}" title="Groß, klein-Buchstaben, Ziffern und Sonderzeichen sind Pflicht!" required="required" placeholder="16-60 Zeichen" type="password" id="passwort" name="passwort" maxlength="62" class="form-control">
</div>
Feld für Passwort wiederholen einfügen
Feld für Senden einfügen
</form>
<p>Schon Registriert? <a href="index.php?page=80">Login</a></p>
<p>Acount Aktiviert? <a href="index.php?page=94">Aktivieren</a></p>
Top
Top