使用javascript和php登录帐户时无法重定向
目前,我正在开发一个网站,为我自己的目的。我是一个网络开发的初学者,所以请理解我,如果我没有得到这个正确的。请帮忙 单击html元素使用javascript和php登录帐户时无法重定向,javascript,php,Javascript,Php,目前,我正在开发一个网站,为我自己的目的。我是一个网络开发的初学者,所以请理解我,如果我没有得到这个正确的。请帮忙 单击html元素按钮 用于登录。见下面的代码: $(document).ready(function(){ $("#login").click(function(){ var username = document.getElementById("username").value; var pword = document.getElemen
按钮
用于登录。见下面的代码:
$(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请求不会在响应的位置头之后重定向用户。
您需要在success回调中使用JS手动重定向用户,或者将表单提交更改为使用,如果您想继续使用目前的AJAX设置(这很好),您需要做的是增强on success函数以读取PHP返回的结果 一个简单的例子 而不是
标题(“位置:index.html”)代码>
写
echo“index.html”;
退出代码>
然后将以下内容添加到on success功能中:
window.location.href=msg代码>
这将开始让您了解AJAX调用和PHP服务器之间的关系
下一步
不要让AJAX返回字符串(index.html
),而是使用它
返回一个信息数组,也许你想欢迎用户
有个人信息吗
您不需要创建字符串(var datasend=“username=“+username+”&password=“+pword;”
)并将其提供给AJAX调用,您可以发送一个数组
确保您的密码未以明文形式存储在服务器上
首先要确保的是,在发送Ajax请求时,PHP重定向头不起作用。
因此,您的问题的解决方案是:
在PHP文件中更改这部分代码:
header("Location: index.html");
进入:
然后在Ajax请求成功回调中:
success:function(msg){
if (msg == 'Success') {
window.location = "/path/to/redirect";
}
}
如果您对此仍有疑问,请告诉我。切勿以明文形式存储密码!。只存储密码哈希!使用PHP的和。如果您运行的PHP版本低于5.5(我真的希望您不是),那么可以使用获得相同的功能。首先,你有一个答案来解释为什么用户没有被重定向。但是,即使您正常发布表单(而不是使用ajax),您仍然会遇到问题。出于某种原因,您在转义用户名和密码时会回显它们。如果这样做,您将无法在之后使用header()
,因为在任何输出之前都需要发送头。仅使用php更安全吗,先生?@BooLaTeh,不,AJAX和其他任何东西一样“安全”。帖子就是帖子。无论是否使用Ajax,都没有区别。然而,使用Ajax通常会带来更好的用户体验,因为页面不需要在出错时重新加载。您好,先生!我可以问一个问题吗?我的php代码有一个错误,它说,未定义索引。哪一个是用户名和密码,如何修复??我已经看到了解决方案,isset
但它不起作用,先生,我现在有了。顺便说一下,谢谢!
success:function(msg){
if (msg == 'Success') {
window.location = "/path/to/redirect";
}
}