如果操作html表单,则使用php

如果操作html表单,则使用php,php,mysqli,Php,Mysqli,我正在用php制作登录页面 但是,如果操作了html表单的空白检查(第4行),则为否 在html中输入表单后,即使按了登录键,也没有moveif语句 因为原因不明,我想让你告诉我 if (isset($_POST["login"])) {//PUSH login button //form blank check if ($_POST["email"] = '') { $error['email'] = "blank"; } else if ($_POST["pass"]

我正在用php制作登录页面

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

在html中输入表单后,即使按了登录键,也没有moveif语句

因为原因不明,我想让你告诉我

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(设置($\u POST[“login”]){//按登录按钮
//空白支票
如果($_POST[“email”]=''){
$error['email']=“空白”;
}如果($_POST[“pass”]=''){
$error['pass']=“blank”;
}
}
如果(!空($_POST['email'])){
//电子邮件和密码 验证
如果($_POST['email']!=''&$_POST['pass']!=''){
$email=$_POST['email'];
$pass=SHA1($_POST['pass']);
$query=“选择*来自人工”;
$result=mysqli_查询($dbc,$query);
$data=mysqli\u fetch\u数组($result);
如果($data['email']=$email){//格式电子邮件和密码
如果($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));
退出();
}否则{
$error['match']=“anmatch”;//不匹配错误
}
}
}
电子邮件

首先,如注释中所述,您正在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";
}
这一行:
if($\u POST[“email”]=''){
不是一个比较,而是一个赋值。将其替换为
if($\u POST[“email”]=''){
(请注意双精度
=
。imo,仅供参考,1)不需要单独的cookie。2)出于安全原因,不在cookie中存储用户标识信息。它可以很容易地读取。相反,将用户记录的“哈希”id存储在cookie中,将“哈希”id存储在用户中。这样做是安全的,并且只使用一个cookie。