<?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("數(shù)據(jù)庫連接失敗");?? ?$sql = "SELECT * FROM user WHERE username='{$username}' AND password='$password'";?? ?$result = mysqli_query($link, $sql);?? ?if(!$result) die("數(shù)據(jù)庫查詢錯誤".$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);}這段代碼是怎么將密碼和用戶對應(yīng)起來,密碼不對是怎么驗證出來的呢?求助~~~TAT蟹蟹
1 回答
已采納

我是新手_請多指教
TA貢獻140條經(jīng)驗 獲得超79個贊
首先mysqli_query針對select查詢執(zhí)行的結(jié)果是返回符合$sql語句的結(jié)果集(也就是有多少條數(shù)據(jù)滿足用戶名與密碼與數(shù)據(jù)庫上的都相等)。
如果執(zhí)行sql語句后沒有符合條件的結(jié)果集或者sql語句寫錯,$result都會為false,!取反為真執(zhí)行數(shù)據(jù)庫查詢報錯。
如果執(zhí)行sql語句有結(jié)果集,那么mysqli_num_rows這個函數(shù)是返回結(jié)果集中行的數(shù)量,也就是說$rows這個變量如果只有一條記錄符合要求的話(因為如果$rows不等于1意味著用戶名和密碼都一樣的人有多個記錄,就沒辦法確定具體是誰登錄的了),接著就執(zhí)行mysqli_fetch_array函數(shù)返回一個關(guān)聯(lián)數(shù)組(第二參數(shù)指定)存在$user變量里,后面就是設(shè)置cookie了,
至于你的問題,如果用戶名與密碼跟數(shù)據(jù)庫對不上的話或者記錄不唯一的話就執(zhí)行else分支了。也不會有緩存了
- 1 回答
- 0 關(guān)注
- 1677 瀏覽
添加回答
舉報
0/150
提交
取消