作者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