目前,我正在开发一个网站,用于我自己的目的。我是网络开发的初学者,所以如果我不正确,请理解我。请帮忙。
点击 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 服务器之间的关系应该是什么样子。
后续步骤
- 不要让 AJAX 返回字符串 (
index.html
) 返回一个信息数组,也许你想欢迎用户 带有个性化消息? - 您无需创建字符串 (
var datasend = "username="+ username + "&password="+ pword;
) 并将其提供给 AJAX 调用,您可以发送数组。 - 确保您的密码没有以纯文本形式存储在服务器上。
关于javascript - 使用 javascript 和 php 登录帐户时无法重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55274354/