gpt4 book ai didi

应用 jQuery 后 php header 不起作用

转载 作者:行者123 更新时间:2023-11-28 01:54:16 24 4
gpt4 key购买 nike

//脚本.js

$(document).ready(function(){
$(".loginProzor").hide();
$(".login").click(function(){
$(".loginProzor").fadeToggle(300);
});

$("#prijavi").click(function(){
if($("#user").val() == "" || $("#pass").val() == ""){
$("#labelGreska").html("Unesite korisničke podatke");
}
else{
$.post($("#forma").attr("action"), $("#forma :input").serialize(),
function(data){
$("#labelGreska").html(data);
});}

$("#forma").submit(function(){
return false;
});

});
});

//表单

<form id="forma" action="login.php" method="post">
<label>Korisničko ime</label><br>
<input type="text" name="user" id="user"><br>
<label>Lozinka</label><br>
<input type="password" name="pass" id="pass"><br>
<input type="submit" value="Prijavi se" id="prijavi">
<label id="labelGreska"></label>
</form>

//登录.php

<?php

include 'funkcije.php';
include 'spojiBazu.php';

$user = $_POST['user'];
$pass = $_POST['pass'];

if(!$user){
$greske[] = 'Unesite korisničko ime';
}
$pass = md5($pass);
$ucitaj = mysql_query("select * from login where username = '$user' and password = '$pass'");
session_start();
if(mysql_num_rows($ucitaj) === 0){
echo 'Korisnički podaci nisu validni, molimo pokušajte ponovo.';
}else{
$korisnik = mysql_query("select username from login where username = '$user'");
$podatak = mysql_result($korisnik, 0);

$_SESSION['user'] = $podatak;
header("Location: index.php");
}


?>

你好

我正在学习网络开发,但遇到了一个问题。我创建了简单的登录表单。它使用 jQuery 评估一些错误,使用 PHP 评估其余错误。一切正常,除了 PHP 中的 Header 命令。当用户成功登录时,header 命令应该重定向到 index.php 以便用户可以验证它是否已登录,但在这种情况下 header 标签不起作用。在应用 jQuery(所有错误都由 PHP 处理)之前,header 命令没有问题。你能说出这里出了什么问题吗?

最佳答案

详情,

由于 AJAX 发生在“幕后”(可以这么说),您的重定向只会中断对您的 javascript 处理程序的响应。所以 PHP 现在不能重定向你的浏览器,jQuery 可以。所以使用 jQuery 来重定向用户。

您需要返回 URL 并让您的回调将浏览器踢到新位置。

关于这一点,由于您必须向前端返回数据,因此您需要添加一个 status 或类似的变量,以便您可以根据调用是否切换前端行为“失败”与否。

正是 Marc B 指出的,

您正在执行 ajax 调用 - php header 将重定向 ajax 响应...而不是用户当前所在的页面。您必须修改客户端中的 javascript 代码才能更改位置。

javascript 重定向就像 window.location.href = "http://mylocation"; 一样简单。

解决你的问题,

JQUERY

//脚本.js

$(document).ready(function(){
$(".loginProzor").hide();
$(".login").click(function(){
$(".loginProzor").fadeToggle(300);
});

$("#prijavi").click(function(){
if($("#user").val() == "" || $("#pass").val() == ""){
$("#labelGreska").html("Unesite korisničke podatke");
}
else{
$.post($("#forma").attr("action"), $("#forma :input").serialize(),
function(data){
if(data=="success"){
window.location.href = "index.php";
} else{
alert("login failed");
}
});
}
$("#forma").submit(function(){
return false;
});

});
});

PHP

<?php

include 'funkcije.php';
include 'spojiBazu.php';

$user = $_POST['user'];
$pass = $_POST['pass'];

if(!$user){
$greske[] = 'Unesite korisničko ime';
}
$pass = md5($pass);
$ucitaj = mysql_query("select * from login where username = '$user' and password = '$pass'");
session_start();
if(mysql_num_rows($ucitaj) === 0){
echo 'failed';
exit;
}else{
$korisnik = mysql_query("select username from login where username = '$user'");
$podatak = mysql_result($korisnik, 0);

$_SESSION['user'] = $podatak;
echo "success";
}


?>

关于应用 jQuery 后 php header 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17953309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com