一个足够让人崩溃的空格

今天把本身的程序放到Linux上,原本觉得能够正常运行了,结果问题接踵而至,首先是验证码显示不了,验证码显示不了说说解决思路:php

1:检查在生成的验证码的程序是否使用了未定义的变量,一切使用了未定义的变量的所有都会死翘翘
2:在输出验证码时输出不因该输出的,tab等等那些看不到特殊符号,这些都会死翘翘接着

好了,解决验证码了,接下来我想写一段文章,点击编辑按钮,结果跳出来的是登陆框,难以想象,由于这个编辑按钮与cookie相关的,由于是本身写的程序,要排除这种错误也是很快的,告诉你们怎么快速查看cookie的key 和value ,就是大名的鼎鼎的chrome,必备神器html

wKioL1NQ4jrjfFvhAAPWuGcMLJU165.jpg

查看以后我发现,服务器端建立的cookie发送不到客户端,没有我想要的cookie,因而去检查程序,一头雾水不知道从何下手,先写个简单的测试,测试cookie是否有问题,也请教了一下群里的大神,说cookie以前不能有输出,我学习时的老师也只是说过sessionstart前不能有输出,结果测试以后是没有问题的,因而就测试一下其它的链接,接着header重定向也崩溃了,浏览器只是一片空白,没有任何提示,没有办法只好亮出我以前研究出来的神器了,php的cli这货才是最强悍的神器啊,神器的使用方法,请看http://freax.blog.51cto.com/6614733/1346438  这种神器必需要必备哦,下面就是个人问题了:chrome

wKioL1NQ6lPjj0uuAACuwHRXqUQ291.jpg

不知道你发现问题没有,再后面一行是否多出了一个空格,其实问题就处在这里,就由于多输出了空格,接着就去排查文件吧!!!!apache


说一下须要注意的:浏览器

header session  cookie 前都不能有输出,若是有这些函数将会失效,和图片的同样不能在图片的二进制流中有任何输出缓存


这种空格最容易出现的地方就是?> 这后面不知道什么时候添加上去的 查找这个是最难的,不过有了上述方法后相信再也不是问题服务器

还有一种就是不知道你怎么搞在他以前有输出的,好比notice 这种是不会输出到浏览器的,在图片的二进制流中常见,图片显示不了cookie



下面是月光博客给出的解决方案,http://www.williamlong.info/archives/171.html  原本我都想用ob_start()解决的,可是不想这么作:session

解决方案:ide

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

打开php。ini文件(你应试比我清楚你的php。ini在哪里),找到

output_buffering =改成on或者任何数字。若是是IIS6,请必定改成ON,否则你的PHP效率会奇慢。

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

简单:

在你的空间根目录下创建一个。htaccess文件,内容以下:

AllowOverride All
PHP_FLAG output_buffering On

不幸的状况是:仍是不行?所有网页都不能显示啦?

那么,你能够打电话骂一通空间商,而后让他给你把apache的。htaccess AllowOverride打开

3)在PHP文件里解决

ob_start()
启用output buffering机制。 Output buffering支持多层次 -- 例如,能够屡次调用 ob_start() 函数。

ob_end_flush()
发送output buffer(输出缓冲)并禁用output buffering机制。

ob_end_clean()
清除output buffer但不发送,并禁用output buffering。

ob_get_contents()
将当前的output buffer返回成一个字符串。容许你处理脚本发出的任何输出。

原理:

output_buffering被启用时,在脚本发送输出时,PHP并不发送HTTP header。相反,它将此输出经过管道(pipe)输入到动态增长的缓存中(只能在PHP 4。0中使用,它具备中央化的输出机制)。你仍然能够修改/添加header,或者设置cookie,由于header实际上并无发送。当所有脚本终止时,PHP将自动发送HTTP header到浏览器,而后再发送输出缓冲中的内容

写程序仍是在Linux写吧,否则会添加一些莫名其妙的问题有得你折腾

相关文章
相关标签/搜索