搜索
首页php教程php手册PHP exit()函数相关

今天遇到一个问题,运行下面代码时报错。

<?php
session_start();
if(!isset($_SESSION['user']) || null === $_SESSION['user'])
{
    header('location:login.php');
    exit;
}
?>

错误信息为:

    
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\PHPProjects\agilelite\index.php:1) in D:\PHPProjects\agilelite\index.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at D:\PHPProjects\agilelite\index.php:1) in D:\PHPProjects\agilelite\index.php on line 6

为了解决这个问题,研究一下exit这个函数的用法。

return、break和contiue是语言结构,就如同if语句之类的,但是exit却是个函数。exit函数的作用是输出一则消息并且终止当前脚本。

如果一段文本中包括多个以 ?>结束的脚本,则exit退出当前所在脚本。

比如一篇php文本包括一下代码,则输出为 NowaMagic。

<?php
	echo "Hello";
	exit;
?>
<?php
	echo "NowaMagic";
?>

exit函数语法格式如下(void表示没有返回值):

void exit ([ string $status ] )
void exit ( int $status )

如果status是一段字符串,这个函数在脚本退出前打印status。

如果status是一个整数,这个整数会被作为退出状态。退出状态应该从0到254,退出状态255被PHP保留并禁止使用。状态0被用来表示成功的终止程序。

在header跳转后使用exit

PHP的header可以输出http头部信息,前提是,在header之前不能输出任何内容,因为所有的内容都作为http的body输出给客户端了,一旦有body的内容,就不可能再添加任何head部分的信息。

header函数的一个常用的方式就是用来做转向,redirect。

比如,我需要转到某个地址,只要执行下述代码:

<?php
	header('Location: http://www.bkjia.com/');
?>

浏览器会收到一个302的http状态码,告诉他这个内容已经被转移了。

重要的是,php会在调用header函数后,继续执行后面的代码,你可以用我的代码亲自试验一下:

<?php
header('Location: http://www.bkjia.com/');
$fp	= fopen('header.txt', 'w+');
fwrite($fp, date('Y-m-d H:i:s'));
?>

肯定会执行到fwrite函数的,打开header.txt文件,检查时间!

对此,解决的办法是,要在每一个header函数后面加上exit,保证当前页面停止执行,进而转向location指定的地址。

为了避免到处都是exit,可以写一个专门用作转向的函数,比如:

<?php
function DoRedirect($strUrl) {
	header('Location: ' . $strUrl);
	exit;
}
?>

另,为了避免在header之前输出body的内容,许多php框架都采用了php页面尾部不写?>的方式,因为有些人总习惯在?>后面添加一个换行,这真的是个不好的习惯。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境