Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,使用AJAX将数据从javascript发送到PHP_Javascript_Php_Ajax - Fatal编程技术网

PHP,使用AJAX将数据从javascript发送到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"

这个问题还没有解决。有人能帮我更新新代码吗。新代码在这篇文章的底部

我正在学习PHP,现在我正在尝试学习使用AJAX将数据从JS传递到PHP

这是我的表格:

<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";
}

?>