Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Php 在指定的时间后转到注销页面-由于使用ajax调用header命令而出现问题_Php_Ajax_Header_Logout - Fatal编程技术网

Php 在指定的时间后转到注销页面-由于使用ajax调用header命令而出现问题

Php 在指定的时间后转到注销页面-由于使用ajax调用header命令而出现问题,php,ajax,header,logout,Php,Ajax,Header,Logout,我正在使用php/ajax中的api,并且我在每个页面中都包含了一个测试,测试用户是否在一段时间后由于不活动而未注销。它是有效的,但有时我会遇到麻烦。故事是这样的: 我有一个名为index.php的文件。php有一个div——我们把它命名为“div”。它也有一些按钮——让我们把它命名为“新建”和“修改”。当我按下按钮时,文件new.php和modify.php的主体通过ajax方法加载到“div”。到现在为止,一直都还不错。但当用户在一段时间内处于非活动状态时,它应该将其注销。确实如此。但不幸的

我正在使用php/ajax中的api,并且我在每个页面中都包含了一个测试,测试用户是否在一段时间后由于不活动而未注销。它是有效的,但有时我会遇到麻烦。故事是这样的:

我有一个名为index.php的文件。php有一个div——我们把它命名为“div”。它也有一些按钮——让我们把它命名为“新建”和“修改”。当我按下按钮时,文件new.php和modify.php的主体通过ajax方法加载到“div”。到现在为止,一直都还不错。但当用户在一段时间内处于非活动状态时,它应该将其注销。确实如此。但不幸的是,注销页面并没有打印到index.php中,而是打印到“div”的主体中,原因很清楚。这很容易理解-按下“new”按钮会将我移动到new.php。New.php检查我是否登录-我没有登录,因此它会将我重定向到logout.page,因此New.php将生成注销页面,并成为我的“div”主体。这里有一个问题:如果我已注销,而不是在div中打印,如何将整个页面(index.php)重定向到注销页面。
记住,按“新建”按钮不会刷新index.php,因为我使用ajax。它只刷新我的div。这可能吗?

使用javascript重定向怎么样?您真的不需要关心“黑客”用户,因为他们没有登录就没有任何权限,所以只需使用以下命令重定向普通用户:

<script language="JavaScript">document.location="/logout.php";</script>
document.location=“/logout.php”;

使用javascript重定向怎么样?您真的不需要关心“黑客”用户,因为他们没有登录就没有任何权限,所以只需使用以下命令重定向普通用户:

<script language="JavaScript">document.location="/logout.php";</script>
document.location=“/logout.php”;

不要在
new.php
中执行重定向,而是让php脚本在用户注销时返回一些特定值,在AJAX调用中分析该输出,必要时通过javascript执行重定向

换言之:

  • 如果
    new.php
    成功,请执行您通常执行的操作
  • 如果
    new.php
    返回一些“身份验证失败”状态,请执行重定向

最好的方法是将AJAX响应封装在JSON对象中,这样您就可以同时拥有数据和响应代码,以便在javascript端更容易地进行分析。

不要在
new.php
中执行重定向,而是让php脚本在用户注销时返回一些特定值,在AJAX调用中分析该输出,并在必要时通过javascript进行重定向

换言之:

  • 如果
    new.php
    成功,请执行您通常执行的操作
  • 如果
    new.php
    返回一些“身份验证失败”状态,请执行重定向
最好的方法是将AJAX响应封装在JSON对象中,这样您就可以同时拥有数据和响应代码,以便在javascript端更容易地进行分析。

试试这个方法-将“3000”更改为任何毫秒数(例如,如果是15分钟,则将其设置为“900000”)


(功能(){
setTimeout(函数(){
window.location=“www.yourawesomesite.com/logout”;
}
,3000)
})();
尝试此操作-将“3000”更改为任何毫秒数(例如,如果是15分钟,则将其设置为“900000”)


(功能(){
setTimeout(函数(){
window.location=“www.yourawesomesite.com/logout”;
}
,3000)
})();

我认为你的想法是严重的安全威胁。这种验证不应该通过ajax完成-你不能信任用户我不理解安全问题,ajax响应是由你的PHP脚本生成的,而不是由你希望我用javascript重定向用户的用户生成的。因为javascript是客户端语言,恶意用户可以阻止重定向。那么?重定向不是一种安全措施,它只是在被拒绝访问后要做的事情。您可能只是显示一条错误消息,而不是重定向,甚至什么也不做。重点是实际用户验证是由PHP完成的,我认为你可能是正确的:)但是它使我的代码有很多修改:/+ 1:你的想法在我看来是严重的安全威胁。这种验证不应该通过ajax完成-你不能信任用户我不理解安全问题,ajax响应是由你的PHP脚本生成的,而不是由你希望我用javascript重定向用户的用户生成的。因为javascript是客户端语言,恶意用户可以阻止重定向。那么?重定向不是一种安全措施,它只是在被拒绝访问后要做的事情。您可能只是显示一条错误消息,而不是重定向,甚至什么也不做。重点是实际用户验证是由PHP完成的,我认为你可能是正确的:)但是它使我的代码有很多修改:/+ 1为你: