能帮我看看咩,有几句不太懂什么意思QWQ

<?php

$username = $_POST['username'];
$password = $_POST['password'];

if (strlen($username) ==0 || strlen($password) == 0) {
    echo "用户名和密码不能为空,<a href='login.htm'>点击</a>重新输入";
}else{
    $link = mysqli_connect('localhost','root','','dis');
    if(!$link) die("数据库连接失败");
    $sql = "SELECT * FROM user WHERE username='{$username}' AND password='$password'";
    $result = mysqli_query($link, $sql);
    if(!$result) die("数据库查询错误".$sql);
    $rows = mysqli_num_rows($result);
    if ($rows == 1) {
        $user = mysqli_fetch_array($result, MYSQLI_ASSOC);
        // var_dump($user);
        $uid = $user['uid'];

        setcookie('login',1,time()+60*60);
        setcookie('username', $username, time()+60*10);
        setcookie('uid',$uid,time()+60*60);
        header("Location:index.php");
    }else{
        echo "用户名与密码匹配,请重新输入";
    }
}
?>

这是登陆的php,我不太懂这一部分

    if ($rows == 1) {
        $user = mysqli_fetch_array($result, MYSQLI_ASSOC);
        // var_dump($user);
        $uid = $user['uid'];

        setcookie('login',1,time()+60*60);
        setcookie('username', $username, time()+60*10);
        setcookie('uid',$uid,time()+60*60);}

这段代码是怎么将密码和用户对应起来,密码不对是怎么验证出来的呢?

求助~~~TAT

蟹蟹

Momo_____
浏览 1647回答 1
1回答

我是新手_请多指教

首先mysqli_query针对select查询执行的结果是返回符合$sql语句的结果集(也就是有多少条数据满足用户名与密码与数据库上的都相等)。如果执行sql语句后没有符合条件的结果集或者sql语句写错,$result都会为false,!取反为真执行数据库查询报错。如果执行sql语句有结果集,那么mysqli_num_rows这个函数是返回结果集中行的数量,也就是说$rows这个变量如果只有一条记录符合要求的话(因为如果$rows不等于1意味着用户名和密码都一样的人有多个记录,就没办法确定具体是谁登录的了),接着就执行mysqli_fetch_array函数返回一个关联数组(第二参数指定)存在$user变量里,后面就是设置cookie了,至于你的问题,如果用户名与密码跟数据库对不上的话或者记录不唯一的话就执行else分支了。也不会有缓存了
打开App,查看更多内容
随时随地看视频慕课网APP