为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:利用exit(); 或者死(); 在标头之后(“ Location:”);

/ 猿问

PHP:利用exit(); 或者死(); 在标头之后(“ Location:”);

PHP
守着星空守着你 2019-12-04 12:49:55

我有一个简单的用户登录/注册系统


// execute queries, set cookies, etc. here

header("Location: " . getenv("HTTP_REFERER"));

我最近看了一个关于交exit();和die();,不知道,我本来应该使用这些。据我了解,它们使PHP终止了吗?那是对的吗?我可以解决此问题的最好方法是,直接在everHeader()之后直接添加这些函数之一;我有死刑吗?


我有AJAX,jQuery通过我的login.php / register.php阅读,这会以任何方式受到影响吗?


编辑:除了header()之后,我还应该在哪里使用exit();or die();函数?而在exit();更多的使用PHP左右,而die();周围的Perl更多的使用呢?


查看完整描述

3 回答

?
米琪卡哇伊

我也一直在寻找答案。我发现:


为什么死()或退出():

如果您未header('Location: http://something')在脚本后放置die()或exit(),则脚本可能会继续导致意外行为。例如,这可能会导致泄露您实际上想要通过重定向(HTTP 301)阻止的内容。最终用户可能无法直接看到上述内容,因为浏览器可能无法呈现(由于301)。结论,exit()和die()函数可阻止脚本继续运行。


区别:

我还想知道函数之间的区别,因为似乎没有区别。但是,在PHP中,Header输出有明显的不同。在下面的示例中,我选择使用其他标头,但为了显示出exit()和die()之间的区别并不重要。


Exit()的作用

<?php

    header('HTTP/1.1 304 Not Modified');

    exit();

?>

结果是:


HTTP/1.1 304 Not Modified 

Connection: Keep-Alive 

Keep-Alive: timeout=5, max=100

Die()在行动

<?php

    header('HTTP/1.1 304 Not Modified');

    die();

?>

结果是:


HTTP/1.1 304 Not Modified 

Connection: close

区别

因此,die()关闭连接,而exit()没有关闭。是否要保持打开或关闭连接取决于性能。两者都有优点和缺点,并取决于您的特定要求。


查看完整回答
反对 2019-12-04
?
慕田峪7331174

http://php.net/manual/zh/function.exit.php


http://php.net/manual/zh/function.die.php


此功能用于中断脚本执行。您需要在之后使用exit或die停止执行脚本header("Location: " . getenv("HTTP_REFERER"));,因为在其他情况下,您的脚本将一直执行到最后,这可能导致某些意外行为。


查看完整回答
反对 2019-12-04

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信