- 在
login.php
中建立驗證碼程式,這裏我們採session的方式來建立驗證碼,將答案存在session中,然後登入時先使用ajax去確認答案是否正確,如果正確則繼續下一步,如果錯誤則出現錯誤提示1
2
3
4
5
6
7
8
9
10
11<tr>
<td class="tt ct">驗證碼</td>
<td class="pp">
<?php
$a=rand(10,99);
$b=rand(10,99);
$_SESSION['ans']=$a+$b;
echo "{$a} + {$b} = ";
?>
<input type="text" name="ans" id="ans"></td>
</tr>
在
./api/
目錄中建立ans.php
檔案,並撰寫檢查驗證碼的功能1
2include_once "../base.php";
echo ($_SESSION['ans']==$_GET['ans'])?1:0;在
./js/js.js
中建立檢查驗證碼的js程式碼,在外部js檔中建立這支函式,並增加帶入資料表物件名稱的參數,這會讓這支函式同時也可以適用於管理登入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28function login(table){
let user={
acc:$("#acc").val(),
pw:$("#pw").val()
}
let ans=$("#ans").val();
$.get("./api/ans.php",{ans},(res)=>{
if(parseInt(res)){
$.post("./api/login.php",{table,user},(res)=>{
if(parseInt(res)){
switch(table){
case "User":
location.href="index.php";
break;
case "Admin":
location.href="backend.php";
break;
}
}else{
alert("帳號或密碼錯誤")
}
})
}else{
alert("對不起,您輸入的驗證碼有誤請您重新登入")
}
})
}在類別中撰寫login方法
/controller.php/User.php1
2
3
4
5
6
7
8function login($user){
if($this->count($user)){
$_SESSION['user']=$user['acc'];
return 1;
}else{
return 0;
}
}在
./api/
目錄中建立login.php
檔案,利用可變變數的方式來直接取用類別中的login方法,並將表單資料帶入1
2
3
4include_once "../base.php";
echo ${$_POST['table']}->login($_POST['user']);由於題目中並沒有描述註冊是否需要驗證所有的欄位,也沒有提到登入失敗會如何,因此這些細節可以自己視時間來決定是否增加