我有一个简单使用的用户登录/注册系统
// execute queries, set cookies, etc. here
header("Location: " . getenv("HTTP_REFERER"));
Run Code Online (Sandbox Code Playgroud)
我最近阅读了一篇关于exit();并且die();不知道我应该使用这些内容的帖子.根据我的理解,他们让它结束PHP?那是对的吗?我能为此努力的最佳方法是什么,只需在header()之后直接添加其中一个函数; 执行我有吗?
我有AJAX,通过我的login.php/register.php阅读jQuery,这会以任何方式影响吗?
编辑:除了header();之后,我应该在哪里使用exit();或者die();函数?并且exit();更多地用于PHP,而die();更多用于Perl?
小智 35
我一直在寻找答案.我找到了什么:
如果header('Location: http://something')在脚本可能继续导致意外行为后未放置die()或exit().例如,这可能导致您实际想要通过重定向(HTTP 301)阻止您公开的内容.对于最终用户而言,上述内容可能不是直接可见的,因为浏览器可能不呈现它(由于301).结论,exit()和die()函数阻止脚本继续.
我也想知道函数之间的区别,因为似乎没有.但是,在PHP中,Header输出存在明显差异.在下面的例子中,我选择使用不同的标题,但为了显示exit()和die()之间的区别并不重要.
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Run Code Online (Sandbox Code Playgroud)
结果是:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Run Code Online (Sandbox Code Playgroud)
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
Run Code Online (Sandbox Code Playgroud)
结果是:
HTTP/1.1 304 Not Modified
Connection: close
Run Code Online (Sandbox Code Playgroud)
因此,die()关闭连接而exit()不关闭.无论您是否要保持连接打开或关闭它,都取决于性能.两者都有优点和缺点,取决于您的具体要求.
Tim*_*mur 10
http://php.net/manual/en/function.exit.php
http://php.net/manual/en/function.die.php
此函数用于中断脚本执行.之后,您需要使用exit或die停止执行脚本header("Location: " . getenv("HTTP_REFERER"));,因为在其他情况下,您的脚本将被执行到最后,这会导致一些意外行为.