app教程网 综合百科 php禁用cookie(php 防止xss)

php禁用cookie(php 防止xss)

本文讨论了如何彻底杜绝令人费解的错误警告:不能添加报头信息-报头已发送进来.

只要你写过PHP代码,相信你都遇到过这个最令人费解的警告.今天我们将修复它。.

阅读PHP手册,回答如下:

Message warning: Unable to send session cookie-header has been sent.

"Or the title information could not be added-the title has been sent.

函数header()、setcookie()和session需要向输出流添加头信息。但是报头信息只能在任何其他输出内容之前发送。在使用这些函数之前,不能有任何输出(比如HTML)。

函数headers_sent()可以检查你的脚本是否发送了头信息。参见输出控制功能。

不要有任何单词、空行、回车、空格等。在使用上述功能之前。但是.问题是答案并不令人满意。因为往往程序在其他PHP环境下都能正常运行。

首先:这个错误是怎么产生的?我们来看看PHP是如何处理HTTP头输出和体输出的。

当一个PHP脚本开始执行时,它可以发送头部信息和主体信息。标头信息(来自Header()或SetCookie()函数)不会立即发送;相反,它保存在一个列表中。

这允许您修改标题信息,包括默认标题(如内容类型标题)。但是,一旦脚本发送了任何无标题的输出(例如,使用HTML或print()调用),

那么PHP必须先发送所有的头,然后终止HTTP头。然后继续发送正文数据。从那时起,任何添加或修改标题信息的尝试都是不允许的,并且会发送上述错误消息之一。

好吧!那我们来解决一下:

愚蠢的方法:不要显示所有的错误警告!鸵鸟,具体方法就不说了_ #

解决方案:

1)适合有权限编辑PHP。INI的人

打开php。Ini文件(你应该比我更了解你的php。ini在哪里),找到它

Output_buffering=更改为on或任何数字。如果是IIS6,请改成ON,否则你的PHP效率会极慢。

2)使用虚拟主机,不能编辑PHP。INI,我们该怎么办?

简单:

在您的共享空间的根目录下创建一个。Htaccess文件,内容如下:

AllowOverride All PHP_FLAG output_buffering On

不幸的情况是:还是没有?网页不能全部显示吗?

然后,你可以给空间商打电话骂他,然后让他把阿帕奇的给你。Htaccess AllowOverride打开

3)在PHP文件中求解

Ob_start()启用输出缓冲机制。输出缓冲支持多个级别——例如,ob_start()函数可以被多次调用。

Ob_end_flush () sends the output buffer (output buffer) and disables the output buffer mechanism.

Ob_end_clean () clears the output buffer but does not send, and disables the output buffer.

Ob_get_contents()以字符串形式返回当前输出缓冲区。允许您处理脚本的任何输出。

原则:

启用output_buffering时,脚本发送输出时PHP不发送HTTP头。相反,它将这个输出通过管道传输到一个动态增加缓存中(仅在PHP 4。用于0,

它具有集中式输出机制)。您仍然可以修改/添加标头,或者设置cookie,因为标头实际上并没有被发送。当所有脚本终止时,PHP会自动向浏览器发送HTTP头。

然后发送输出缓冲区的内容。

本文来自网络,不代表本站立场,转载请注明出处:https: