推 dj4 :推一下 可預防SQL injection 04/08 22:17
※ 引述《marcoyan (あぁ.触らない!)》之銘言:
: ※ 引述《hinet60613 (小呆維)》之銘言:
: : 小弟正在寫一個需要管理介面的網站
: : 不過光是登入的地方就0rz
: : <?php
: : $admin=$_POST["admin"];
: : $insert=$_POST["insert"];
: : $password=mysql_query("select * from `web` where admin=$admin") or die("未抓到
: : 密碼");
: 以上沒有mysql_connect動作,所以上述應該無法執行,如果有~繼續下面
: : if($insert == $password["insert"])echo "登入成功";
: 基本上,你沒有將mysql查詢的資料輸出,就不會有$password["insert"]產生
: : else
: : {
: : echo"登入失敗<br>";
: : echo $password["insert"];
: : }
: : ?>
: : 現在是不管怎樣他都說登入失敗
: 好像錯蠻大的.. 我補充一下好了..(見笑見笑..^^")
: 你上述如果你是要做簡單的打帳密登入的話,你參考下列的行為
: 不過基本上密碼通常會加密(md5等等)
: 下面是比較簡易型的登入測試
: <?php
: $username=$_POST['username']; //使用者帳號
: $password=$_POST['password']; //使用者密碼
: $sql="SELECT * FROM `web` WHERE `admin` = '".$username."' AND `password` = '".$password."'";
儘量不要把密碼放在 sql schema 裡
$sql='SELECT * FROM `web` WHERE `admin`="'.addslashes($username).'" LIMIT 1';
$rs=mysql_query($sql);
if(!mysql_num_rows($rs)){
//failed
}
else{
$rs=mysql_fetch_assoc($rs);
if(!strcmp($rs['password'],$password)){
//successful
}
else{
//failed
}
unset($rs);
}
: $rs=mysql_query($sql);
: if(mysql_num_rows($rs)=='1'){ //假設搜尋出的資料筆數為1筆
: echo "登入成功";
: }else{
: echo "登入失敗";
: }
: ?>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.158.15