为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
Momo_____ 2017-06-03 17:00:04
<?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蟹蟹
查看完整描述

1 回答

已采纳
?
我是新手_请多指教

TA贡献140条经验 获得超79个赞

首先mysqli_query针对select查询执行的结果是返回符合$sql语句的结果集(也就是有多少条数据满足用户名与密码与数据库上的都相等)。

如果执行sql语句后没有符合条件的结果集或者sql语句写错,$result都会为false,!取反为真执行数据库查询报错。

如果执行sql语句有结果集,那么mysqli_num_rows这个函数是返回结果集中行的数量,也就是说$rows这个变量如果只有一条记录符合要求的话(因为如果$rows不等于1意味着用户名和密码都一样的人有多个记录,就没办法确定具体是谁登录的了),接着就执行mysqli_fetch_array函数返回一个关联数组(第二参数指定)存在$user变量里,后面就是设置cookie了,

至于你的问题,如果用户名与密码跟数据库对不上的话或者记录不唯一的话就执行else分支了。也不会有缓存了

查看完整回答
1 反对 回复 2017-06-03
  • Momo_____
    Momo_____
    嘻嘻,谢谢你~~~~
  • 我是新手_请多指教
    我是新手_请多指教
    修正一下,执行select的sql语句后如果是空的结果集,$result不为false,也就是不会报数据库查询错误,如果查不到匹配的数据$rows为0.
  • Momo_____
    Momo_____
    嗯呐,蟹蟹!好喜欢你这种认真的态度。
  • 1 回答
  • 0 关注
  • 1615 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信