kangjacob 2021-08-07 03:21 采纳率: 96.8%
浏览 55
已结题

登录判定错在哪,除了连接正常外,后面的判定代码不执行


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>VIP用户登陆</title>
</head>
<body>

<br>
<br>
<form name="loginForm" method="get" action="testpassword.php" onsubmit="return checkUser()" >
   用户名:<input type="text" name="loginName"><br><br>
    密码: &nbsp  <input type="password" name="userPassword"><br><br>

    <input type="button" value="注册" onclick="register()" style="width:60px;height:30px" >&nbsp &nbsp &nbsp &nbsp &nbsp
    <input type="submit" value="登陆" style="width:60px;height:30px">

</form>

<script>

     function checkUser() {
         //var check=true;
         var userName=document.getElementsByName('loginName')[0];
         var passWord=document.getElementsByName('userPassword')[0];
        if (userName.value==""){
            alert('请先填写用户名');
            return false;
        }
        if(passWord.value==""){
            alert('请填写密码')
            return false;
        }
        document.cookie='userName='+userName.value;
        document.cookie='passWord='+passWord.value;
    }
    function register(){
    window.location.href='./register.php'
    }
</script>
</body>
</html>


以上是登陆页面,以下是判密码是否正确,如不正确则跳转回去。然而无论怎样都只是显示连接成功,后面的代码似乎无法运行。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>中医九种体质问卷</title>
</head>
<?php
$servername = "l--";
$username = "---";
$password = "--;
$dbname = "------";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}else{echo '连接成功!<br>';}
//firstly we should make sure the password is right?
$userPassword=$_COOKIE['passWord'];
$userName=$_COOKIE['userName'];
echo 'username:'.$userName.'<br>';
echo 'passWord:'.$userPassword;
$sql= "SELECT * FROM user_table WHERE userName=$userPassword";//php的双引号里面可以放变量
$result = $conn->query($sql);
if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo  $row["userPassword"]. "?<br>";

    }
} else {
    echo "0 结果";
}
$conn->close();


if ($row['userPassword']!= $userPassword){
    header("location:./loginPage.php");
}
?>
</body>

</html>



  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2021-08-07 10:27
    关注

    你原来的HTML没问题,提交表单数据其实不需要cookie,get/post提交就行,当然cookie也行,只是获取方式不一样。

    你的错误主要在sql语句,userName和userPassword这2个字段是字符串吧,要用引号扩起才行,要不值被单做变量了。改下面的就好了,而且sql语句直接判断用户名和密码,不需要读取2次数据库。

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~

    php代码逻辑也有错误。
    if ($row['userPassword']!= $userPassword){ 这里的判断有2个问题。
    如果账号密码错误,$row没有赋值去内容会出错。
    账号密码正确,由于你是while读取,最后$row还是会为null,要改为下面的

    if ($result->num_rows > 0) {
        // 输出数据
        $row = $result->fetch_assoc();
        echo  $row["userPassword"]. "?<br>";
    }
     
    

    img

    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>中医九种体质问卷</title>
    </head>
    <?php
    $servername = "localhost";
    $username = "root";
    $password = "Admin_123";
    $dbname = "test";
    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    }else{echo '连接成功!<br>';}
    //firstly we should make sure the password is right?
    $userPassword=$_COOKIE['passWord'];
    $userName=$_COOKIE['userName'];
    
    
    $sql= "SELECT * FROM user_table WHERE userName='$userName' and userPassword='$userPassword'";//注意SQL语句字符串类型要用引号扩起
    
    $result = $conn->query($sql);
    
    $conn->close();
    if ($result->num_rows <=0) {///没有对应用户跳转
    
        header("location:./loginPage.php");
    
    } else {//账号和密码匹配进行其他操作
    
      echo "登录成功";
    
    }
    ?>
    </body>
    </html>
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 8月15日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大