作者timsheu (心如緋炎)
看板PHP
標題[請益] 密碼檢驗的問題
時間Sun Apr 13 19:39:49 2008
有稍微爬過文,找不太到相關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
1F:推 yukang:你有試印出來過你該行 sql 指令的內容麻? 04/13 19:42
2F:→ yukang:因為我沒看到你指定 $account 和 $password 是什麼 04/13 19:42
3F:→ yukang:否則看看 session_start() 吧 04/13 19:43
4F:→ timsheu:該行是指哪一行? 04/13 19:45
5F:→ timsheu:session_start(); 有需要做什麼變動嗎? 04/13 19:46
6F:→ timsheu:啊,我忘記改了 囧 04/13 19:47
7F:→ timsheu:那請問mysql的語法要怎麼用全域變數? 04/13 19:47
※ 編輯: timsheu 來自: 219.68.208.80 (04/13 19:51)
8F:→ timsheu:他印出 Resource id #4 04/13 19:54
9F:→ fuddle:在mysql_query()後面加 or die(mysq_error());看看為何die 04/13 20:19
10F:→ fuddle:或 echo 你的 SQL, 搞不好某變數是空的 04/13 20:20
11F:→ timsheu:我有echo 過了,$testReq的變數是Recource id #4 04/13 20:22
12F:→ fuddle:抱歉, 打錯字, 應該是 mysql_error() 才對 (逃~~) 04/13 20:22
13F:→ timsheu:而echo $_SESSION['admin']也是1,現在變成只會是1 orz 04/13 20:22
14F:→ timsheu:別逃T.T 我搞了一整天了 囧> 04/13 20:24
15F:→ fuddle:沒看清楚, 以為你die在mysql的query, 所以yukang是對的 04/13 20:34
16F:→ fuddle:把session_start();放在第二個檔案的最上面試試 04/13 20:35
17F:→ timsheu:Warning: session_start(): Cannot send session cache li 04/13 20:38
18F:→ timsheu:miter - headers already sent 出現這個錯誤 04/13 20:38
19F:→ timsheu:哭哭,沒人救我了orz 04/13 21:03
20F:→ cttlee:mysql_query傳回非零或FALSE指出查詢是否成功 04/13 21:30
21F:→ cttlee:你不能用if ( $testReq )判斷帳號密碼正確吧 04/13 21:31
22F:→ timsheu:我是想說用and的話,如果兩個都正確就回傳非零,就當作 04/13 21:34
23F:→ timsheu:正確@@ 04/13 21:35
24F:→ timsheu:我決定重寫了orz 04/13 21:54
25F:推 chph:你的code有安全性疑慮, $_POST記得做處理.. 04/14 14:53
26F:→ timsheu:嗯嗯,我知道,不過因為我沒有帳密,所以是測試而已, 04/15 22:26
27F:→ timsheu:到時候還是會加md5 04/15 22:26
28F:推 w3c:chph 指的應該是 SQL injection 04/17 13:25
29F:推 appleboy46:大推樓上 04/18 09:45