ich suche Verbesserungsvorschläge / Vorschläge was man besser / sicherer machen könnte bei mein Script & was ich lieber nicht rein sollte.
PHP Code:
<?php
require_once 'dbconfig.php';
include 'sec/verbindung.inc.php';
if($user->is_loggedin()) {
$user->redirect('home.php');
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0 user-scalable=no">
<style>
@-ms-viewport{ width=device-width; }
</style>
<link rel="stylesheet" href="css/style_reg.css" type="text/css">
<link rel="stylesheet" href="css/normalize.css" type="text/css">
<title>Registration</title>
</head>
<body>
<header role="banner" class="main-header">
<h1 class="main-title"> Homepage </h1>
<nav class="social-nav">
<ul class="social-media">
<li><a href="#" target="_blank" class="genericon genericon-twitter"></a></li>
<li><a href="#" target="_blank" class="genericon genericon-facebook-alt"></a></li>
<li><a href="#" target="_blank" class="genericon genericon-googleplus"></a></li>
</ul>
</nav>
<p class="search-tag"><input type="search" placeholder="suche"></p>
</header>
<main role="main">
<nav role="navigation" class="navigation">
<ul class="nav">
<li><a href="startseite">Home</a></li>
<li><a href="#">News</a></li>
<li><a href="register">Registrieren</a></li>
<li><a href="information.php">Information</a></li>
<li><a href="login">Login</a></li>
</ul>
</nav>
<?php
if(isset($_POST['senden']) && strtolower($_POST['senden'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$vorname = $_POST['vorname'];
$nachname = $_POST['nachname'];
$error = '';
function check($DB_con, $email) {
$stmt = $DB_con->prepare("SELECT email FROM w_user_data WHERE email = ?");
$stmt->BindParam(1, $email);
$stmt->execute();
if($stmt->rowCount() > 0) {
return true;
} else {
return false;
}
}
if(check($DB_con, $email) === true) {
$error = 'Die Email Adresse existierts bereits. Bitte verwenden Sie eine neue oder andere Email Adresse.';
}
elseif(empty(trim($email)) && empty(trim($_POST['atmail-g']))) {
$error = 'Es ist ein Problem aufgetreten. Das Feld der Email darf nicht leer sein. ';
}
elseif($email !== $_POST['atmail-g']) {
$error = 'Die angegebenen Email Adressen sind nicht korrekt. Bitte überprüfen Sie ihre Angaben.';
}
elseif(strlen($email) < 7) {
$error = 'Es ist ein Problem aufgetreten. Die Email darf nicht k�rzer als 7 Zeichen sein. ';
}
elseif(strlen($email) > 35) {
$error = 'Es ist ein Problem aufgetreten. Die Email darf nicht l�nger als 35 Zeichen sein. ';
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = 'Es ist ein Problem aufgetreten. Die Email Adresse muss richtig angebeben werden und ein <b>@</b> enthalten. ';
}
elseif(empty(trim($password))) {
$error = 'Es ist ein Problem aufgetreten. Das Feld des Passwort darf nicht leer sein. ';
}
elseif($password !== $_POST['psw-g']) {
$error = 'Das angegebenene Password ist nicht gleich.';
}
elseif(strlen($password) < 7) {
$error = 'Es ist ein Problem aufgetreten. Das Passwort darf nicht k�rzer als 7 Zeichen sein. ';
}
elseif(strlen($password) > 35) {
$error = 'Es ist ein Problem aufgetreten. Das Passwort darf nicht l�nger als 35 Zeichen sein. ';
}
elseif(empty(trim($vorname))) {
$error = 'Es ist ein Problem aufgetreten. Das Feld des Vorname darf nicht leer sein. ';
}
elseif(strlen($vorname) < 3) {
$error = 'Es ist ein Problem aufgetreten. Der Vorname darf nicht k�rzer als 3 Zeichen sein. ';
}
elseif(strlen($vorname) > 35) {
$error = 'Es ist ein Problem aufgetreten. Der Vorname darf nicht l�nger als 35 Zeichen sein. ';
}
elseif(!filter_var($vorname, FILTER_SANITIZE_STRING)) {
$error = 'Es ist ein Problem aufgetreten. Der Vorname darf nur Buchstaben enthalten. Keine Ziffern oder sonstige Zeichen. ';
}
elseif(empty(trim($nachname))) {
$error = 'Es ist ein Problem aufgetreten. Das Feld des Nachname darf nicht leer sein. ';
}
elseif(strlen($nachname) < 3) {
$error = 'Es ist ein Problem aufgetreten. Der Nachname darf nicht kürzer als 3 Zeichen sein. ';
}
elseif(strlen($nachname) > 25) {
$error = 'Es ist ein Problem aufgetreten. Der Nachname darf nicht kürzer als 25 Zeichen sein. ';
}
elseif(!filter_var($nachname, FILTER_SANITIZE_STRING)) {
$error = 'Es ist ein Problem aufgetreten. Der Nachname darf nur Buchstaben enthalten. Keine Ziffern oder sonstige Zeichen. ';
}
$option = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
if(!$error) {
$insert = $DB_con->prepare("INSERT INTO w_user_data (email, password, vorname, nachname, ip, date_insert) VALUES (?, ?, ?, ?, NOW())");
$insert->BindValue(1, $email);
$insert->BindValue(2, password_hash($password, PASSWORD_BCRYPT, $option));
$insert->BindValue(3, $vorname);
$insert->BindValue(4, $nachname);
if($insert->execute()) {
exit("<article id='erfolg_insert'><section id='content'><p class='susc_reg'>Sie haben erfolgreich einen Account erstellt.</p> <br> <p class='after_reg'><a href='login.php' class='now_log_after_reg'>Jetzt Einloggen</a></p> </section></article><?php");
}
}
}
?>
<article id="a1-reg">
<section id="content">
<h2 class="h2-reg"> Registrieren </h2>
<h3 class="h3-reg"> Kostenlos und schnell Registrieren </h3>
<p class="genericon genericon-user"></p>
</section>
</article>
<article id="a2-reg">
<section id="content">
<form action="<?php $_SERVER['REQUEST_METHOD']?>" method="POST">
<?php if(isset($error)) { ?>
<article id='error_info'>
<section id='content'>
<?php echo $error; ?>
</section>
</article>
<?php } ?>
<p><input type="email" name="email" placeholder="E-Mail Adresse"> <input type="email" name="atmail-g" placeholder="E-Mail Adresse Wiederholen"></p>
<p><input type="password" name="password" placeholder="Passwort"> <input type="password" name="psw-g" placeholder="Passwort Wiederholen"></p>
<p><input name="vorname" placeholder="Ihr Vorname"> <input name="nachname" placeholder="Ihr Nachname"></p>
<p class="info-agb"> Beim Senden der Registration stimmen Sie automatisch der <a href="#" class="agb"> AGB</a> zu.</p>
<p><input type="submit" class="send" value="Senden" name="senden"> <input type="reset" class="reset" value="Zurücksetzen"></p>
</section>
</article>
</main>
</body>
</html>