javascript - 使用 javascript 和 php 登录帐户时无法重定向

标签 javascript php

目前,我正在开发一个网站,用于我自己的目的。我是网络开发的初学者,所以如果我不正确,请理解我。请帮忙。

点击 html 元素 button 时,我有一个 javascript 代码 用于登录。请参阅下面的代码:

$(document).ready(function(){
    $("#login").click(function(){
        var username = document.getElementById("username").value;
        var pword = document.getElementById("password").value;          
        validateUser(username,pword);
    });
});


function validateUser(user,pass){
    var username =user;
    var pword =pass;
    var datasend = "username="+ username + "&password=" + pword;

    $.ajax({
        type:'POST',
        url:'../bench/php/login.php',
        data:datasend,
        crossDomain: true,
        cache:false,
        success:function(msg){
            alert("Hello World"); //Trying to pop up
            $('#username').val('');
            $('#pword').val('');
        }
    });
}

我第二次尝试点击按钮时成功触发了该按钮,并且会弹出hello world消息,但如果使用以下帐户成功登录,则无法重定向页面WAMP 服务器中的 MySQL。下面是 PHP 代码:

<?php
// require("php/config.php");
include("config.php");
session_start();

if($_POST['username'] != '' && $_POST['password'] !='') {
    // username and password sent from form 
    echo $myusername = mysqli_real_escape_string($db,$_POST['username']);
    echo $mypassword = mysqli_real_escape_string($db,$_POST['password']); 

    //$sql = "SELECT user_id  FROM user WHERE username = '$myusername' and password = '$mypassword'";
    $sql = "SELECT * FROM user WHERE username = '$myusername' and password = '$mypassword'";
    $result = mysqli_query($db,$sql);
    $rows = mysqli_fetch_array($result);
    $count = mysqli_num_rows($result);

    // If result matched $myusername and $mypassword, table row must be 1 row
    if($count == 1) {
        session_regenerate_id();
        $_SESSION['login_user'] = $myusername; 
        header("Location: index.html");

    } else {
        echo '<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>';
        echo '<script type="text/javascript">';
        echo 'setTimeout(function () { swal("Oops!","Your Account Credentials is Invalid, Please Try Again!","error");';
        echo '}, 100);</script>';
    }
}
?>

问题是,即使第二次点击触发 HELLO WORLD 警报,页面也不会重定向到 index.html

我不知道自己做错了什么。

我不知道为什么这不起作用,我看到控制台,不存在错误。

有人可以帮我解决这个问题吗?任何帮助将不胜感激。感谢和问候。

最佳答案

如果您想继续使用目前的 AJAX 设置(这完全没问题),您需要做的是增强 on-success 函数以从您的应用程序中读取返回的结果PHP。

一个简单的例子

而不是

header("位置:index.html");

echo "index.html"; 退出;

然后将以下内容添加到成功函数中:

window.location.href = msg;

这将开始让您了解 AJAX 调用和 PHP 服务器之间的关系应该是什么样子。

后续步骤

  1. 不要让 AJAX 返回字符串 (index.html) 返回一个信息数组,也许你想欢迎用户 带有个性化消息?
  2. 您无需创建字符串 (var datasend = "username="+ username + "&password="+ pword;) 并将其提供给 AJAX 调用,您可以发送数组。
  3. 确保您的密码没有以纯文本形式存储在服务器上。

关于javascript - 使用 javascript 和 php 登录帐户时无法重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274354/

相关文章:

javascript - 停止自动运行功能,直到单击 "start"按钮

javascript - 如何根据浏览器设备添加/删除html元素和内容?

javascript - 有没有办法在 JavaScript 中模拟内联 let 表达式?

javascript - 在 javascript 中调用 php 的替代方案?

PHP条件逻辑,具体顺序?

php - 保存超链接显示文本 onclick 以在其他页面上的查询中使用它

javascript - 如何使网站的加载屏幕保持一定秒数

PHP返回对其他类中数组的引用

php - 报告垃圾邮件或滥用行为

php - 如何将 php 源代码的行号合并到自定义错误消息中?