<?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 回答
- 0 关注
- 1645 浏览
添加回答
举报
0/150
提交
取消