前端 HTML + JavaScript
<html>
<head>
<script type="text/javascript">
function postRequest(strURL) {
var xmlHttp;
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open('POST', strURL, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
updatepage(xmlHttp.responseText);
}
};
xmlHttp.send(strURL);
}
function updatepage(str) {
if (str == "yes") {
alert("Welcome User");
} else {
alert("Invalid Login! Please try again!");
}
}
function call_login() {
var username = document.f1.username.value;
var password = document.f1.password.value;
var url = "login.php?username=" + encodeURIComponent(username) + "&password=" + encodeURIComponent(password);
postRequest(url);
}
</script>
</head>
<body>
<center>
<form name="f1" onsubmit="return call_login();">
<table border="0" bgcolor="#CCCCCC" cellspacing="1" cellpadding="3" width="316">
<tr><td align="left" colspan="2"><b><font size="5" color="#000080">Login</font></b></td></tr>
<tr><td align="right" width="124"><b><font color="#000080">User Name:</font></b></td>
<td width="177"><input type="text" name="username" id="user" size="20" /></td></tr>
<tr><td align="right" width="124"><b><font color="#000080">Password:</font></b></td>
<td width="177"><input type="password" name="password" size="20" /></td></tr>
<tr><td colspan="2" align="center"><input type="button" name="a1" value="Login" onclick="call_login()" /></td></tr>
</table>
</form>
</center>
</body>
</html>
後端 login.php
<?php
$username = $_GET["username"];
$password = $_GET["password"];
// 實際專案應查詢資料庫驗證密碼雜湊
if ($username == "admin" && $password == "admin") {
echo "yes";
} else {
echo "No";
}
?>
改進建議
- 改用
POST 傳送密碼,避免 URL 記錄洩露。
- 後端驗證使用
password_hash()/password_verify(),嚴禁明文比對。
- 回傳 JSON 格式:
{"success":true,"token":"..."},前端 JSON.parse() 處理。
- 加入 CSRF Token、限制嘗試次數、HTTPS 強制。
- 使用現代
fetch() 或 axios 替代原生 XHR。