PHP:利用 exit();或者死();在 header ("Location: "之后);

标签 php exit die

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

// execute queries, set cookies, etc. here
header("Location: " . getenv("HTTP_REFERER"));

我最近读了一篇关于 exit();die(); 的文章,我不知道我应该使用它们。据我了解,他们使它结束了 PHP?那是对的吗?我可以为此努力的最佳方法是什么,只需在 header(); 之后直接添加其中一个函数即可。我有执行吗?

我有 AJAX,jQuery 读取我的 login.php/register.php,这会以任何方式影响吗?

编辑:除了在 header(); 之后,我还应该在哪里使用 exit();die(); 函数? exit(); 更多地用于 PHP 而 die(); 更多地用于 Perl?

最佳答案

我也一直在寻找这个问题的答案。我发现了什么:

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

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

区别:

我也想知道函数之间的区别,因为它似乎没有。但是,在 PHP 中,Header 输出存在明显差异。 在下面的示例中,我选择使用不同的 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() 不会。是否要保持连接打开或关闭取决于性能。两者都有优点和缺点,取决于您的具体要求。

HTTP persistent connections on Wiki

关于PHP:利用 exit();或者死();在 header ("Location: "之后);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8665985/

相关文章:

php - 查询未执行。没有错误

php - php中的方法链接

http - 终止或中止 HTTP 请求

c++ - exit() 或异常会阻止调用范围结束的析构函数吗?

php - 从本地服务器测试 SilverStripe 电子邮件联系表单

php - PHP解析/语法错误;以及如何解决它们

php - MySQLi更新和死亡();和退出();不工作

php - 使用 PHPUnit 忽略 exit() 和 die()

php - MySQL update or insert or die 查询

perl - Perl不会进入错误部分