[請益] 密碼檢驗的問題

看板PHP作者 (心如緋炎)時間17年前 (2008/04/13 19:39), 編輯推噓4(4025)
留言29則, 7人參與, 最新討論串1/1
有稍微爬過文,找不太到相關orz 下面是處理密碼頁面的程式碼, 因為帳號密碼有很多組,所以只好用抓取資料庫的方式。 <?php require "setup.php"; session_start(); if($REQUEST_METHOD=="GET") die("請勿蓄意破壞網站,do not try to attack the website"); $account = $_POST['account']; →小弟改過了 $password = $_POST['password']; $testReq = mysql_query("SELECT ID,Password FROM manager WHERE ID='$account' AND Password='$password'"); if ( $testReq ){ $_SESSION['admin'] = 1; //帳號密碼相符,將全域變數的值設為真 } else{ die("<p><center><font face=5 color='Blue'>若非管理人員,請勿進入<br> <br> 若為管理人員,則請重新輸入帳號密碼。</font></center>"); } header("Location:webmaster.php"); ?> 在下面是接收頁部份的程式碼,因為跑到die就真的掛了, 所以剩下的就沒po, <?php require "setup.php"; if( $_SESSION['admin'] != 1 ) die("非管理者請勿登入,或重新輸入帳號密碼"); echo "|<a href='index.php'> 回到公告欄</a> | <a href='input_pub.php'>輸入新資料</a> |"; ?> 即便我帳號密碼是正確的,他還是會跑出die的訊息, 請問是什麼原因呢? -- / ▄▄ ▄▄ ▄▄ ◤◥ ˙ ◤_﹑╴ ▄ ▄▄ ▄▄˙ Burn, baby, burn! ■︵■ M A I M I ︻﹁ Y▲ ▆▆▆▆▅▄▃▂▁ˍ φkana0102 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.68.208.80

04/13 19:42, , 1F
你有試印出來過你該行 sql 指令的內容麻?
04/13 19:42, 1F

04/13 19:42, , 2F
因為我沒看到你指定 $account 和 $password 是什麼
04/13 19:42, 2F

04/13 19:43, , 3F
否則看看 session_start() 吧
04/13 19:43, 3F

04/13 19:45, , 4F
該行是指哪一行?
04/13 19:45, 4F

04/13 19:46, , 5F
session_start(); 有需要做什麼變動嗎?
04/13 19:46, 5F

04/13 19:47, , 6F
啊,我忘記改了 囧
04/13 19:47, 6F

04/13 19:47, , 7F
那請問mysql的語法要怎麼用全域變數?
04/13 19:47, 7F
※ 編輯: timsheu 來自: 219.68.208.80 (04/13 19:51)

04/13 19:54, , 8F
他印出 Resource id #4
04/13 19:54, 8F

04/13 20:19, , 9F
在mysql_query()後面加 or die(mysq_error());看看為何die
04/13 20:19, 9F

04/13 20:20, , 10F
或 echo 你的 SQL, 搞不好某變數是空的
04/13 20:20, 10F

04/13 20:22, , 11F
我有echo 過了,$testReq的變數是Recource id #4
04/13 20:22, 11F

04/13 20:22, , 12F
抱歉, 打錯字, 應該是 mysql_error() 才對 (逃~~)
04/13 20:22, 12F

04/13 20:22, , 13F
而echo $_SESSION['admin']也是1,現在變成只會是1 orz
04/13 20:22, 13F

04/13 20:24, , 14F
別逃T.T 我搞了一整天了 囧>
04/13 20:24, 14F

04/13 20:34, , 15F
沒看清楚, 以為你die在mysql的query, 所以yukang是對的
04/13 20:34, 15F

04/13 20:35, , 16F
把session_start();放在第二個檔案的最上面試試
04/13 20:35, 16F

04/13 20:38, , 17F
Warning: session_start(): Cannot send session cache li
04/13 20:38, 17F

04/13 20:38, , 18F
miter - headers already sent 出現這個錯誤
04/13 20:38, 18F

04/13 21:03, , 19F
哭哭,沒人救我了orz
04/13 21:03, 19F

04/13 21:30, , 20F
mysql_query傳回非零或FALSE指出查詢是否成功
04/13 21:30, 20F

04/13 21:31, , 21F
你不能用if ( $testReq )判斷帳號密碼正確吧
04/13 21:31, 21F

04/13 21:34, , 22F
我是想說用and的話,如果兩個都正確就回傳非零,就當作
04/13 21:34, 22F

04/13 21:35, , 23F
正確@@
04/13 21:35, 23F

04/13 21:54, , 24F
我決定重寫了orz
04/13 21:54, 24F

04/14 14:53, , 25F
你的code有安全性疑慮, $_POST記得做處理..
04/14 14:53, 25F

04/15 22:26, , 26F
嗯嗯,我知道,不過因為我沒有帳密,所以是測試而已,
04/15 22:26, 26F

04/15 22:26, , 27F
到時候還是會加md5
04/15 22:26, 27F

04/17 13:25, , 28F
chph 指的應該是 SQL injection
04/17 13:25, 28F

04/18 09:45, , 29F
大推樓上
04/18 09:45, 29F
文章代碼(AID): #180V48IE (PHP)
文章代碼(AID): #180V48IE (PHP)