locomputing
registrieren.php 
<?php
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
{
header("Location:index.php?page=80");
exit();
}
function CodeString($length=12)
{
return substr(str_shuffle(str_repeat($x='1234567890987654321', ceil($length/strlen($x)))),1,$length);
}
$timestamp=date("Y-m-d H:i:s");
$postmaster="<meine webseite>";
$user_name=$email=$password=$confirm_password="";
$username_err=$mail_err=$password_err=$confirm_password_err="";
if (isset($_POST['save']) && $_POST['save'] == 'Senden')
{
$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!";
}
$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())
{
if ($stmt->rowCount() == 1)
{
$username_err="Dieser Username ist schon vorhanden!";
}
}
}

$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!";
}
$stmt=$pdo->prepare("SELECT usermail FROM usertable WHERE usermail=:usermail");
$stmt->bindParam(":usermail", $param_usermail, PDO::PARAM_STR);
$param_usermail=$email;
if ($stmt->execute())
{
if ($stmt->rowCount() == 1)
{
$mail_err="Diese eMail-Adresse ist schon vorhanden!";
}
}
}

$postpass=isset($_POST['passwort']) ? $_POST['passwort'] : "";
if (empty($postpass))
{
$mail_err="Feld Passwort ist leer!";
}
elseif ((strlen(trim($postpass)) < 8) || (strlen(trim($postpass))) > 40)
{
$password_err="Password 8 bis 40 Zeichen!";
}
else
{
if (!preg_match("/[^a-zA-Z0-9]/",$postpass))
{
$password_err = 'minimum je 1mal Groß, klein-Buchstabe, Ziffer und Sonderzeichen sind Pflicht!';
}
$password=trim($postpass);
if ($password === false)
{
$password_err="Dies ist kein Passwort!";
}
}
POST für Passwort wiederholen prüfen einfügen
Passwörter auf übereinstimmung prüfen einfügen
$code=IntVal(CodeString());
if (empty($username_err) && empty($password_err) && empty($confirm_password_err) && empty($mail_err))
{
$subject=$postmaster."\n";
$empfaenger=trim($email);
$text="Hallo: ".htmlspecialchars($user_name)."\n";
$text.="Betreff:Registrierung\n";
$text.="Dein Freischaltcode: ".$code;
mail($empfaenger,$subject,$text);

$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!";
}
}
}
?>

<form method="post">
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]).{8,40}" title="minimum je 1mal Groß, klein-Buchstabe, Ziffer und Sonderzeichen sind Pflicht!" required="required" placeholder="8-40 Zeichen" type="password" id="passwort" name="passwort" maxlength="42" 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>
freischalten.php 
freischalten.php ohne Datenbank verbindung, ohne Objekt schließen und ohne Verbindung beenden einfügen
ohne Prüfen ob User eingeloggt ist oder nicht einfügen
Prüfen ob User eingeloggt ist oder nicht
<?php
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
{
header("Location:index.php?page=1");
exit();
}
?>
Im script:
Statt: Account ist Aktiviert, Du kannst dich jetzt mit deinen Daten einloggen
header("Location:index.php?page=90&message=aktiv"); einfügen
<form method="post">
Feld für Username variante 2 einfügen
Feld für Passwort variante 2 einfügen
Feld für Code einfügen
Feld für Senden einfügen
</form>
<p>Schon Aktiviert? <a href="index.php?page=80">Login</a></p>
login.php 
login.php ohne Datenbank verbindung, ohne Objekt schließen und ohne Verbindung beenden einfügen
ohne Prüfen ob User eingeloggt ist oder nicht einfügen
Prüfen ob User eingeloggt ist oder nicht
<?php
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
{
header("Location:index.php?page=1");
exit();
}
?>
Im script:
Statt: header("location:welcome.php");
header("Location:index.php?page=1"); einfügen
<form method="post">
Feld für Username variante 2 einfügen
Feld für Passwort variante 2 einfügen
Feld für Senden einfügen
</form>
<p>Noch nicht Registriert? <a href="index.php?page=92">Registrieren</a></p>
<p>Acount schon Aktiviert? <a href="index.php?page=94">Aktivieren</a></p>
profil.php 
pwforget.php 
passwort vergessen.php ohne Datenbank verbindung, ohne Objekt schließen und ohne Verbindung beenden einfügen
Sitzung starten einfügen
ohne Prüfen ob User eingeloggt ist oder nicht einfügen
Prüfen ob User eingeloggt ist oder nicht
<?php
if (isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true)
{
header("Location:index.php?page=80");
exit();
}
?>
Funktion PasswString ersetzen
<?php
function PasswString($length=16)
{
return substr(str_shuffle(str_repeat($x='123456789abcdefghiklmnoprstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ*+~#,.-_:;', ceil($length/strlen($x)) )),1,$length);
}
?>
Im script:
Statt: Die Daten wurden an die registrierungs-eMail versand
header("Location:index.php?page=90&message=forget"); einfügen
<form method="post">
Feld für Username variante 2 einfügen
Feld für eMail variante 2 einfügen
Feld für Senden einfügen
</form>
logout.php 
<?php
Sitzung starten einfügen
unset($_SESSION['username']);
unset($_SESSION['id']);
session_unset();
session_destroy();
header("index.php?page=1");
?>