iT邦幫忙

0

php登入系統驗證

  • 分享至 

  • xImage

我想問如果分別對帳號和密碼驗證,密碼錯誤,就顯示密碼錯誤,而帳號錯誤,就顯示沒有註冊,的方法?
目前我不知道要從哪裡修改,請大家幫忙,感謝!

<?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); 
這個問題應該稍微思考一下就可以懂了
archer9080 iT邦研究生 3 級 ‧ 2021-06-25 17:45:45 檢舉
顯示密碼錯誤先決條件應該是此帳號已有註冊
以甚麼為第一條件查詢到甚麼資料來再次比對

另外僅個人提醒
相對的便利可能會帶來相對的危險
黃彥儒 iT邦高手 1 級 ‧ 2021-06-25 19:18:50 檢舉
這種作法看了就想要搖頭…
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2021-06-25 17:11:47

https://ithelp.ithome.com.tw/upload/images/20210625/20001787qaZA98C4e8.png

前面加一段判斷
$sql = "SELECT * FROM memberWHEREu_email = '{$u_email}' ";
1.有資料,繼續下面的判斷
2.沒資料,顯示「帳號錯誤/請註冊」

前面有資料後繼續你原有的判斷
$sql = "SELECT * FROM memberWHEREu_email= '{$u_email}'ANDu_password = '{$u_password}' ";
1.有資料,表示登入成功(轉去 first.html?)
2.沒資料,表示「密碼錯誤」

0
小魚
iT邦大師 1 級 ‧ 2021-06-25 18:45:30

公司規定要這樣顯示嗎?
要不然一般我們為了防止別人try帳號,
都會顯示 帳號或密碼錯誤.

t2589m62 iT邦新手 5 級 ‧ 2021-06-25 21:26:32 檢舉

我是在自學寫而已

小魚 iT邦大師 1 級 ‧ 2021-06-26 01:08:04 檢舉
  1. 初學就直接學PDO吧
  2. 查一下SQL Injection吧
  3. 要怎麼先判斷帳號是正確的呢? 應該有人跟你說了.
1

由於你說了自學,學的東西看起來是邏輯。
我先不考量基本的安全性的處理。
也不考量使用的函數及物件問題。
更不考量後端處理前端的事。

就單單的邏輯說明。

一般來說,如果要做到能分別判斷帳號及密碼的情況下。
第一要件一定得要帳號是對的。
那帳號要對的要怎麼辦呢?
當然是你要有該帳號的資料啊。
帳號不對也無這帳號的資料情況。也不需要再去考量密碼對不對的問題了吧。
你說是吧。

所以,先單純的WHERE帳號出來。
有就再去比對密碼對不對。
這樣就行了。

最後,你的程式碼如果站在很認真的角度來看。
你問要怎麼改???
我會直接告訴你連改都不要改了。
麻煩你全部重新寫。
當然了,如果你真的要學邏輯判斷。
我真的會希望你打掉重寫。不要再問怎麼改了。

0
carry0987
iT邦新手 5 級 ‧ 2021-07-09 20:17:48

建議去弄清楚 Prepare Statement,你的寫法太危險了

我要發表回答

立即登入回答