首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

AJAX 與 PHP 實作無刷新登入完整範例

     編輯:PHP 綜合知識

前端 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。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved