Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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
在同一页面上加载带有Ajax头的PHP登录脚本_Php_Jquery_Ajax_Sqlite_Forms - Fatal编程技术网

在同一页面上加载带有Ajax头的PHP登录脚本

在同一页面上加载带有Ajax头的PHP登录脚本,php,jquery,ajax,sqlite,forms,Php,Jquery,Ajax,Sqlite,Forms,我有一个PHP登录脚本,我想用ajax执行它。如果成功,PHP脚本会将用户带到一个页面,但根据我使用的ajax请求,标题位置也会加载到$('.logresult')div中如何操作,以便在成功时它会转到标题位置,如果没有,则在$('logresult')中显示错误。以下是我的代码: Ajax请求 $('#submit_log').click(function(e) { e.preventDefault(); var data = $('#loginForm').serialize

我有一个PHP登录脚本,我想用ajax执行它。如果成功,PHP脚本会将用户带到一个页面,但根据我使用的ajax请求,
标题
位置也会加载到
$('.logresult')div中
如何操作,以便在成功时它会转到
标题
位置,如果没有,则在
$('logresult')
中显示错误。以下是我的代码:

Ajax请求

$('#submit_log').click(function(e) {
    e.preventDefault();
    var data = $('#loginForm').serialize(),
    form = $('#loginForm');
    $.post($(form).attr("action"), data, function(data) {
        $('.logresult').html(data);
    })
});
session_start();
require_once ("db.php");
$db = new MyDB();

if(isset($_POST['log_name']) && isset($_POST['log_password'])) {
    $username = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['log_name']);
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['log_password']);

    $sql = $db->prepare("SELECT * FROM users WHERE uname = ?");
    $sql->bindParam(1, $username, SQLITE3_TEXT);
    $ret = $sql->execute();

    $count = $db->prepare("SELECT COUNT(*) as COUNT FROM users WHERE uname = ?");
    $count->bindParam(1, $password, SQLITE3_TEXT);
    $count_ret = $count->execute();

    if (count($count_ret) == 1)
    {
        while ($row = $ret->fetchArray(SQLITE3_ASSOC))
        {
            $id = $row['userid'];
            $regas = $row['regas'];
            $uemail = $row['uemail'];
            $pword = $row['pword'];

            if (password_verify($password, $pword))
            {


              $_SESSION['log_id'] = $id;
              $_SESSION['log_name'] = $username;
              $_SESSION['regas'] = $regas;
              $_SESSION['uemail'] = $uemail;
              header("Location: index.php?log_id=$id");
              exit();
            }
            else
            {
                echo "Information incorrect";
                exit();
            }
        }
    }
}
PHP登录脚本

$('#submit_log').click(function(e) {
    e.preventDefault();
    var data = $('#loginForm').serialize(),
    form = $('#loginForm');
    $.post($(form).attr("action"), data, function(data) {
        $('.logresult').html(data);
    })
});
session_start();
require_once ("db.php");
$db = new MyDB();

if(isset($_POST['log_name']) && isset($_POST['log_password'])) {
    $username = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['log_name']);
    $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST['log_password']);

    $sql = $db->prepare("SELECT * FROM users WHERE uname = ?");
    $sql->bindParam(1, $username, SQLITE3_TEXT);
    $ret = $sql->execute();

    $count = $db->prepare("SELECT COUNT(*) as COUNT FROM users WHERE uname = ?");
    $count->bindParam(1, $password, SQLITE3_TEXT);
    $count_ret = $count->execute();

    if (count($count_ret) == 1)
    {
        while ($row = $ret->fetchArray(SQLITE3_ASSOC))
        {
            $id = $row['userid'];
            $regas = $row['regas'];
            $uemail = $row['uemail'];
            $pword = $row['pword'];

            if (password_verify($password, $pword))
            {


              $_SESSION['log_id'] = $id;
              $_SESSION['log_name'] = $username;
              $_SESSION['regas'] = $regas;
              $_SESSION['uemail'] = $uemail;
              header("Location: index.php?log_id=$id");
              exit();
            }
            else
            {
                echo "Information incorrect";
                exit();
            }
        }
    }
}

我猜问题是
$('.logresult').html(数据)但我真的不知道如何解决这个问题(我对ajax一般都是新手)。谢谢

如果您想更改位置,请不要使用ajax。ajax的使用主要是在您不想重新加载页面时。在大多数情况下,ajax响应是json,并使用javascript处理响应。

如果您想在成功后更改页面的位置,可以通过您的ajax进行更改,我会一直这样做。让一个站点在成功时使用ajax和重定向也是很常见的,我已经看到了很多。在php中,不要执行以下操作:

header("Location: index.php?log_id=$id");
exit();
为了简化现有脚本的使用,您可以发回javascript:

die("<script>window.location='http://www.example.com/index.php?log_id={$id}';</script>");
die(“window.location=”http://www.example.com/index.php?log_id={$id}';”;

如果我要重做您所拥有的,我会从PHP接收json,而不是以动作/指令的形式,并让成功中的javascript解释指令,但这更复杂。

如果您使用头重定向,为什么要使用ajax提交数据。但是,如果您想在不刷新的情况下说出错误的用户名或密码,在这种情况下,您将使用代码和消息响应json。然后使用javascript检查响应代码。例如,如果是404,则向用户显示弹出消息。