Hi Community,
hab ein kleines Problem. Ich habe ein Register Skript und wollte den Username und die Email Filtern. Jedoch sagt er mir das die Email Leer ist oder halt der Username. Mach ich was falsch beim Filtern? Hier der Code:
PHP
<?php
if(isset($_POST['send_register'])) {
$username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF8');
$email = htmlentities($_POST['email'], ENT_QUOTES, 'UTF8');
$error = '';
$password = $_POST['reg_password'];
if(!ctype_alnum($username)) {
$error = 'username nicht gefiltert';
}
elseif(empty(trim($username))) {
$error = "username ist leer";
}
elseif(strlen($username) < 4) {
$error = "Username zu kurz";
}
elseif(strlen($username) > 18) {
$error = "Username ist zu lang";
}
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "Email wurde nicht gefiltert";
}
if(empty(trim($email))) {
$error = "Email ist leer";
}
elseif(strlen($email) < 10) {
$error = "Email zu kurz";
}
elseif(strlen($email) > 40) {
$error = "Email zu lang";
}
if(empty(trim($password))) {
$error = "Password ist leer";
}
elseif(strlen($password) < 6) {
$error = "Passwort ist zu kurz";
}
elseif(strlen($password) > 40) {
$error = "Passwort ist zu lang";
}
if(!$error) {
if($insert = $pdo->prepare("INSERT INTO user(username, email, password) VALUES (?, ?, ?)")) {
$insert->BindValue(1, $username);
$insert->BindValue(2, $email);
$insert->BindValue(3, password_hash($password, PASSWORD_BCRYPT));
if(!$insert->execute()) {
$insert->errorInfo();
} else {
echo 'erfolgreich';
}
} else {
print_r($insert->errorInfo());
}
}
}
?>
<?php if(isset($error)) { echo $error; }?>
Alles anzeigen