php 如果操作了 html 表单的价值


php If worth of html form is operated

我正在用php制作登录页面。

但是,如果操作了 html 表单的空白检查,则没有操作(第 4 行)

输入表单的html后,即使您按登录也没有移动if语句。

既然原因不知道,我想让你告诉我

if (isset($_POST["login"])) {//PUSH login button
   //form blank check
  if ($_POST["email"] = '') {
    $error['email'] = "blank";
  } else if ($_POST["pass"] = '') {
    $error['pass'] = "blank";
  }
}
if(!empty($_POST['email'])){
//email & password verification
 if($_POST['email'] != '' && $_POST['pass'] != ''){
    $email = $_POST['email'];
    $pass = SHA1($_POST['pass']);
    $query = "select * from human";
    $result = mysqli_query($dbc,$query);
    $data = mysqli_fetch_array($result);
      if($data['email'] == $email) {  //form email & password
         if($data['pass'] === $pass) {
           setcookie('email', $email, time()+(60*60*24*3));
           setcookie('pass', $pass, time()+(60*60*24*3));
           setcookie('name', $date['name'], time()+(60*60*24*3));
             exit();
         }else{
           $error['match'] = "anmatch";  //Mismatch Error
         }
      }
  }
<!DOCTYPE html>
<form action="" method="post">
        <dl>
            <dt>email</dt>
            <dd>
                <input type="text" name="email" size="35" maxlength="255"
          value="<?php echo htmlspecialchars($_POST['email']); ?>">
          <?php if($error['email'] == 'blank'): ?>
            <p><font color="red">* Input email</font></p>
          <?php endif; ?>
            </dd>
            <dt>password</dt>
            <dd>
                <input type="password" name="pass" size="35" maxlength="255"
          value="<?php echo htmlspecialchars($_POST['pass']); ?>">
          <?php if($error['pass'] == 'blank'): ?>
            <p><font color="red">* Input password</font></p>
          <?php endif; ?>
            </dd>
        </dl>
        <input type="submit" id="login" name="login" value="sigh in">
    </form>

首先,如注释中所述,您在 if 语句中分配一个值。另外,作为第二点,我猜是因为您的条件是嵌套的else if第一个分配始终为真,因此第二个条件永远不会被测试。

//form blank check
if ($_POST["email"] = '') {
$error['email'] = "blank";
} else if ($_POST["pass"] = '') {
$error['pass'] = "blank";
}
第二个条件语句

仅在第一个条件语句false时计算

您应该尝试独立检查每个变量,并确保使用==

//form blank check
if ($_POST["email"] == '') {
$error['email'] = "blank";
}
if ($_POST["pass"] == '') {
$error['pass'] = "blank";
}