php登錄表單防注入練習

簡單的表單登陸代碼,瞭解sql注入,禁止單引號還有反斜槓\ # and or order關鍵字的提交php

數據庫:
php登錄表單防注入練習html

簡單的源碼:
<!DOCTYPE html>
<html>
<head>
<title>後臺表單登陸頁面</title>
<meta charset=UTF-8>
</head>
<body>
<center>
<h3>後臺登陸</h3>
<form action="" method="POST">
賬號: <input name='username' type='text'><br />
密碼: <input name='password' type='password'><br />
<input type='submit' value='登陸'>
</form>
</center>
</body>
</html>前端

<!--先後端都在一個頁面上-->mysql

<?phpsql

//判斷有數據才執行後端代碼,什麼都不輸入仍是前端登錄界面,防止前端沒有數據,後端驗證總是彈出
if(!empty($_REQUEST)){
//數據不爲空和空格,賦值帳號和密碼,都轉化爲小寫,兩邊去除空格,不然報錯
$user = ! empty(trim($_REQUEST['username'])) ? trim(strtolower($_REQUEST['username'])) : die("<script>alert('帳號不能爲空!')</script>");
$passwd = ! empty(trim($_REQUEST['password'])) ? trim(strtolower($_REQUEST['password'])) : die("<script>alert('密碼不能爲空!')</script>");數據庫

//禁止輸入單引號
if(stristr($user,'\'') || stristr($passwd,'\'') ){
die("<script>alert('帳號密碼有惡意符號,請從新輸入')</script>");
}後端

//禁止添加能夠sql注入的關鍵詞
if(preg_match_all("/\/|#|and|or|order/",$user) || preg_match_all("/\/|#|and|or|order/",$passwd)){
die ("<script>alert('帳號密碼有非法字符,請從新輸入')</script>");
}數組

$conn = mysqli_connect('127.0.0.1','root','root','db_form'); //鏈接數據庫
$sql = "select * from admin where username='$user' and password='$passwd'"; //查詢語句,只要能找到該條記錄,說明匹對正確,判斷爲真,登錄成功ide

$result = mysqli_query($conn,$sql); //取出查詢結果,是個對象
$array = mysqli_fetch_array($result); //把結果對象變爲數組取出數據
//var_dump($array);fetch

//經過取數組裏的鍵值,獲得相應結果//(能查到對應的用戶名,結果爲ture,顯示登錄成功,取不到對應的結果,顯示錯誤)if($array['username']) {echo '登錄成功!';}else{echo '帳號密碼錯誤!';}$conn->close();//關閉鏈接}?>

相關文章
相關標籤/搜索