我想問如果分別對帳號和密碼驗證,密碼錯誤,就顯示密碼錯誤,而帳號錯誤,就顯示沒有註冊,的方法?
目前我不知道要從哪裡修改,請大家幫忙,感謝!
<?php
session_start(); //啟用 session 功能
header("Content-type: text/html; charset=utf-8");
require_once "dbtools.inc.php";
$link = create_connection();
$u_email = mysqli_real_escape_string($link, $_REQUEST['user_email']);
$u_password = mysqli_real_escape_string($link, $_REQUEST['user_password']);
$sql = "SELECT * FROM `member` WHERE `u_email` = '{$u_email}' ";
$result = execute_sql($link, "member_db", $sql);
if(mysqli_num_rows($result)=0) {
$row = mysqli_fetch_assoc($result);
$_SESSION['u_email'] = $row['u_email'];
header("Location: first.html");
}
else {
mysqli_free_result($result);
mysqli_close($link);
echo "<script>alert('**沒有註冊,請註冊**');window.history.back();</script>";
}
mysqli_free_result($result);
mysqli_close($link);
前面加一段判斷$sql = "SELECT * FROM
memberWHERE
u_email = '{$u_email}' ";
1.有資料,繼續下面的判斷
2.沒資料,顯示「帳號錯誤/請註冊」
前面有資料後繼續你原有的判斷$sql = "SELECT * FROM
memberWHERE
u_email= '{$u_email}'AND
u_password = '{$u_password}' ";
1.有資料,表示登入成功(轉去 first.html?)
2.沒資料,表示「密碼錯誤」
公司規定要這樣顯示嗎?
要不然一般我們為了防止別人try帳號,
都會顯示 帳號或密碼錯誤.
由於你說了自學,學的東西看起來是邏輯。
我先不考量基本的安全性的處理。
也不考量使用的函數及物件問題。
更不考量後端處理前端的事。
就單單的邏輯說明。
一般來說,如果要做到能分別判斷帳號及密碼的情況下。
第一要件一定得要帳號是對的。
那帳號要對的要怎麼辦呢?
當然是你要有該帳號的資料啊。
帳號不對也無這帳號的資料情況。也不需要再去考量密碼對不對的問題了吧。
你說是吧。
所以,先單純的WHERE帳號出來。
有就再去比對密碼對不對。
這樣就行了。
最後,你的程式碼如果站在很認真的角度來看。
你問要怎麼改???
我會直接告訴你連改都不要改了。
麻煩你全部重新寫。
當然了,如果你真的要學邏輯判斷。
我真的會希望你打掉重寫。不要再問怎麼改了。