我正在尝试检查该字段是否为空。如果是,则重定向到签名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();
}
?>
答案 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,因此标题将继续发送。