PHP,使用AJAX将数据从javascript发送到PHP
这个问题还没有解决。有人能帮我更新新代码吗。新代码在这篇文章的底部 我正在学习PHP,现在我正在尝试学习使用AJAX将数据从JS传递到PHP 这是我的表格:PHP,使用AJAX将数据从javascript发送到PHP,javascript,php,ajax,Javascript,Php,Ajax,这个问题还没有解决。有人能帮我更新新代码吗。新代码在这篇文章的底部 我正在学习PHP,现在我正在尝试学习使用AJAX将数据从JS传递到PHP 这是我的表格: <form id="login"> <label><b>Username</b></label> <input type="text" name="username" id="username"
<form id="login">
<label><b>Username</b></label>
<input type="text" name="username" id="username"
required>
<label><b>Password</b></label>
<input type="password" name="password" id="password"
required>
<button type="button" id="submitLogin">Login</button>
</form>
在这之后,我尝试使用new FormData()将我的表单数据发送到一个php文件,但我不确定如何执行此操作。现在我有一个这样的代码:
try {
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}else{
Do stuff }
}
catch(error){ alert('"XMLHttpRequest failed!' + error.message); }
if (getElementById('username').value != "" & getElementById('password').value != "") {
request.addEventListener('readystatechange', Login, false);
request.open('GET', 'login.php', true);
request.send(new FormData(getElementById('login')));
}
登录函数是要测试的函数
if (request.readyState === XMLHttpRequest.DONE && request.status === 200) {
在我的PHP文件中,我现在有一个如下所示的函数:
session_start();
$logins = array('username1' => 'password1','username2' => 'password2');
if(isset($_GET['login'])) {
$Username = isset($_GET['username']) ? $_GET['username'] : '';
$Password = isset($_GET['password']) ? $_GET['password'] : '';
if (isset($logins[$Username]) && $logins[$Username] == $Password){
do stuff
}
我还需要将表单数据从js文件传递到php文件,以便检查输入数据是否与数组中的数据相同
-----------------------------------------------------------------------
新代码:
function LoginToSite() {
if (getElementById('username').value != "" && getElementById('password').value != "") {
request.addEventListener('readystatechange', Login, false);
var username = encodeURIComponent(document.getElementById("username").value);
var password = encodeURIComponent(document.getElementById("password").value);
request.open('GET', 'login.php?username='+username+"&password="+password, true);
request.send(null);
}
}
}
当我尝试登录时,网站首先会提醒我出了什么问题,然后同样的事情再次发生,然后,它会提醒“准备就绪”。我需要做什么改变才能使这一切正确?基本上你需要这样的东西(JS端) PHP代码(login.PHP)可能如下所示
# users array
$logins = array ( 'username1' => 'pwd1', 'username2' => 'pwd2' );
# validate inputs
$u = isset ($_POST['username']) ? $_POST['username'] : false;
$p = isset ($_POST['password']) ? $_POST['password'] : false;
# check login
if ($u !== false && $p !== false && isset ($logins[$u]) && $logins[$u] == $p)
echo "success";
else
echo "error";
当然,建议先检查do函数XMLHttpRequest
和FormData
是否存在
if (window['XMLHttpRequest'] && window['FormData']) {
/* place your Ajax code here */
}
尝试运行以下代码 HTML:
<form id="login">
<label><b>Username</b></label>
<input type="text" name="username" id="username"
required>
<label><b>Password</b></label>
<input type="password" name="password" id="password"
required>
<button type="button" id="submitLogin">Login</button>
</form>
PHP:
我希望这对你有帮助。那么,什么东西现在不起作用了?哦,对不起。用户可以键入任何用户名或/和密码登录。我只希望阵列中的密码对登录有效。:)
foreach(以$key=>$value登录){if($Password==$value){echo“Success”;}}
所以您只想检查密码是否正确?但是为什么要这样做呢?登录页面是实现AJAX数据交换的最后一个地方!虽然您可能需要对AJAX请求进行身份验证(这无法使用httponly会话cookie完成),但安全会话提供了一种回退机制,用于重新验证不太安全的令牌。
# users array
$logins = array ( 'username1' => 'pwd1', 'username2' => 'pwd2' );
# validate inputs
$u = isset ($_POST['username']) ? $_POST['username'] : false;
$p = isset ($_POST['password']) ? $_POST['password'] : false;
# check login
if ($u !== false && $p !== false && isset ($logins[$u]) && $logins[$u] == $p)
echo "success";
else
echo "error";
if (window['XMLHttpRequest'] && window['FormData']) {
/* place your Ajax code here */
}
<form id="login">
<label><b>Username</b></label>
<input type="text" name="username" id="username"
required>
<label><b>Password</b></label>
<input type="password" name="password" id="password"
required>
<button type="button" id="submitLogin">Login</button>
</form>
function submitLogin{
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var http = new XMLHttpRequest();
var url = "login.php";
var params = "username="+username+"&password="+password;
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
if(http.responseText == 1){
alert("Login is successfull");
}
else{
alert("Invalid Username or Password");
}
}
else{
alert("Error :Something went wrong");
}
}
http.send(params);
}
<?php
session_start();
$logins = array('username1' => 'password1','username2' => 'password2');
if(isset($_POST['username']) && isset($_POST['password'])){
$username = trim($_POST['username']);
$password = trim($_POST['password']);
foreach($logins as $key=>$value){
if(($key == $username) && ($value == $password)){
echo "1";
}else{
echo "0";
}
}
}else{
echo "0";
}
?>