未定义的索引:并在布尔值上调用成员函数close()

时间:2018-09-19 14:38:40

标签: php mysqli pdo

想要进行安全的注册并成为该错误代码。 我弄错了,我知道他的意思,但是我已经不由自主了。

here's the error code

$DB_HOST = "localhost";
$DB_USER = "root";
$DB_PASS = "";
$DB_NAME = "shoxygram";

$DB = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);

if ($DB -> connect_errno) {
    die ("Verbindung zur Datenbank konnte nicht aufgebaut werden: " . $DB -> connect_errno);
}

if (!isset($_POST['username']) && (!isset($_POST['emailadr']) && (!isset($_POST['password']) && (!isset($_POST['passwdhl']))))) {
    echo "Korrigieren Sie die Registration und füllen Sie eventuelle freibleibende Felder. <br/>";
} if (empty($_POST['username']) || empty($_POST['emailadr']) || empty($_POST['password']) || empty($_POST['passwdhl'])) {
    echo "Korrigieren Sie die Registration und füllen Sie eventuelle freibleibende Felder. <br/>";
} if (!filter_var($_POST['emailadr'], FILTER_VALIDATE_EMAIL)) {
    echo "Die e-Mail Adresse ist ungültig. <br/>";
} if (preg_match('/[A-Za-z0-9]+/', $_POST['username']) == 0) {
    echo "Dein Username darf nur aus Buchstaben und Zahlen bestehen. <br/>";
} if (strlen($_POST['password']) > 20 || strlen($_POST['password']) < 5) {
    echo "Dein Passwort muss zwischen 5 und 20 Zeichen lang sein. <br/>";
} if($_POST['password'] == $_POST['passwdhl']) {
    if ($stmt = $DB -> prepare('SELECT id, password FROM users WHERE username = ?')) {
        $stmt -> bind_param('s', $_POST['username']);
        $stmt -> execute(); 
        $stmt -> store_result();

        if($stmt -> num_rows > 0) {
            echo "Dieser Username existiert bereits. <br/>";
        } else {
            if($stmt = $DB -> prepare('INSERT INTO accounts (username, password, emailadr) VALUES (?, ?, ?)')) {
                $Password = password_hash($_POST['password'], PASSWORD_DEFAULT);
                $stmt -> bind_param('sss', $_POST['username'], $Password, $_POST['emailadr']);
                $stmt -> execute();
                echo "Du hast Dich erfolgreich registriert. Du kannst Dich nun einloggen.";
            } else {
                echo "Ein Fehler ist bei deiner Registrierung aufgetreten.";
            }
        }
        $stmt -> close();
    } else {
        echo "Ein Fehler ist bei deiner Registrierung aufgetreten.";
    }
    $DB -> close();
} else {
    echo "Dein wiederholtes Passwort muss mit dem anderen übereinstimmen. <br/>";
}

我已经尽力了,但是我无法弄错。如果有人能帮助我,那会更好,那又进一步。

0 个答案:

没有答案