Как проверить, является ли поле формы пустым, используя PHP - PullRequest
1 голос
/ 23 марта 2012

Я пытаюсь проверить, не заполнено ли поле.Если это так, перенаправьте подписать Uppage.Сейчас он просто продолжает создавать несколько учетных записей с пустым именем пользователя и паролем.Я пытался использовать strlen (), но, похоже, он не работает.

<?php
        try{
        $username = trim($_POST['username']);
        $password = trim($_POST['password']);
        $hash = crypt($password_signup, '$3a$08$2'); // salt 

        $connection = new PDO ('mysql:host=localhost;dbname=tongue', 'web', 'lapming1');
        $connection -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $connection -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

        require_once("functions.php");

        $sql = 'SELECT email, hash FROM user WHERE email=:username';
        $row = login ($sql, $connection, $username_signup);

        if ($username = false){
            header("Location: sign_up.php?error");
        };

        if ($row) {
            header("Location: sign_up.php?msg=1");
        }
        else {
            $sql = 'INSERT INTO user(email, hash) VALUES (:username, :password)';
            create($sql, $connection, $username_signup, $password_signup);
            header("Location: index.php");
        };


    $connection = null;

    } catch(PDOException $e) {
        echo $e->getMessage();
    }

?>

Ответы [ 3 ]

2 голосов
/ 23 марта 2012

$username = trim($_POST['username']);
if(!empty($username)) {
   ....is not empty
}
2 голосов
/ 23 марта 2012

Я вижу ошибку .. Вы используете базовый оператор присваивания "=" вместо операторов сравнения "=="

Изменить

   if ($username = false){
        header("Location: sign_up.php?error");
    };

К

   if ($username == false){
        header("Location: sign_up.php?error");
    };

или лучший подход

  if (empty($username){
        header("Location: sign_up.php?error");
    };

Спасибо :)

0 голосов
/ 23 марта 2012

Так проще

if (!strlen($username)){
 header("Location: sign_up.php?error");
};

И вы не используете правильные операторы сравнения

$username = false присваивает логическое значение false $username и всегда будет возвращаться какЗначение true, и, следовательно, заголовок будет отправляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...