如何使用PHP检查表单字段是否为空

时间:2012-03-23 08:04:06

标签: php forms

我正在尝试检查该字段是否为空。如果是,则重定向到签名uppage。现在,它只是继续使用NULL用户名和密码创建多个帐户。我尝试使用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 个答案:

答案 0 :(得分:2)

我可以看到错误..你正在使用比较运算符“==”的基本赋值运算符“=”

更改

   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");
    };

由于 :)

答案 1 :(得分:2)


$username = trim($_POST['username']);
if(!empty($username)) {
   ....is not empty
}

答案 2 :(得分:0)

这样更容易

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

您没有使用正确的比较运算符

$username = false将布尔值false分配给$username,并始终返回true,因此标题将继续发送。