php出现Cannot modify header information解决实例

以前做了个PHP读取文本文档的小程序,然后改造了一下加了个登录功能,让它可以凭密码登陆修改文本文档,可以用在php在线修改robots文件等等。但是更换了主机之后,原来的代码不能用了,出现了Cannot modify header information的错误提示。

PHP Warning:  Cannot modify header information – headers already sent by (output started at /demo/robots.php:3) in /demo/robots.php on line 7
PHP Warning:  session_start() [<a href=’function.session-start’>function.session-start</a>]: Cannot send session cache limiter – headers already sent (output started at /demo/robots.php:3) in /demo/robots.php on line 4

而在其他主机和本地测试一切正常,最后网上找到一段话:

cookie本身在使用上有一些限制,例如:
1.呼叫setcookie的代码必须放在<html>标签之前
2.呼叫setcookie之前,不可使用echo
3.直到网页被重新载入后,cookie才会在程序中出現
4.setcookie函数必須在任何资料输出至浏览器前,就先送出……

那么会不会是Session也需要在<html>标签之前出现呢?而我为了省事,在代码中没有加入<html>标签,看了有些是不能省略的。

于是增加了标准html代码,并在将$_SESSION的判断放在了整个文档的前面。然后测试了下,成功了。有时候一个小的地方不注意,就会造成一些大的问题。以后要注意了。

登陆一下试试看吧://blog.icoa.cn/demo/robots.php

PHPWind论坛如何修改面包屑导航(位置导航)

PHPWind论坛程序是PHP常用的论坛程序之一,但是它有个缺点是位置导航(又称面包屑导航)设置的非常不科学。

一般网站的位置导航都是:首页>栏目页>内容页

而PHPWind比较特殊的是,网站首页支持两种模式,一种是门户模式,一种是论坛模式。有些是用门户模式做默认首页,那么论坛首页会变成/index.php?m=bbs,如果支持伪静态的话会变成/index-htm-m-bbs.html。

现在出现的问题是,不管是否将网站设置为伪静态,那么位置导航中的首页链接都是/index.php?m=bbs,这样就造成会出现两个网址指向同样的内容。也就是不符合URL标准化的要求。

继续阅读“PHPWind论坛如何修改面包屑导航(位置导航)”

PHPWind论坛301跳转代码

做SEO的大家都知道,网址的首选域要统一非常重要。也就是比如我网站绑定了两个域名,包括带www的和不带www的,那么我选择一个作为主要域名做推广,那么就需要将另外一个域名301跳转到主域名。

如果服务器支持,比如是IIS7以上的服务器的话,可以使用Web.config的301跳转代码。使用Linux操作系统的可以使用.htaccess的301跳转

如果是动态语言的话,还可以使用程序代码。

现在手里有一个PHPwind的论坛,需要将不带www的跳转到www的域名,可惜无法通过设置web.config和.htaccess来实现。只好使用PHP代码做301跳转

继续阅读“PHPWind论坛301跳转代码”

.htaccess实现从Zblog跳转到wordpress

用Linux主机的网站可以通过.htaccess做301跳转,这个大家都很清楚。

如果能对.htaccess的规则非常了解的话,那么使用起来肯定得心应手。但是如果不熟悉的话,只能做到只是更换域名不更换文件路径的跳转。比如从a域名跳转到b域名,只能做到类似a域名/123.html到b域名/123.html。

但是如果从zblog迁移到wordpress博客程序,那么就需要比如从类似于http://blog.cocold.com/post/25.html 跳转到//blog.icoa.cn/25.html和从http://blog.cocold.com/catalog.asp?tags=301 跳转到//blog.icoa.cn/tag/301 等这种更换了域名并更换了博客平台的情况来说就无能为力了。

继续阅读“.htaccess实现从Zblog跳转到wordpress”

PHP设置了Session之后在其他页面读取不到的原因

PHP的Session也就是PHP会话经常用于用户登录之类应用。前些日子我参加了电商圈的比赛,但是又比较懒,不想架设博客或网站,于是就用PHP做了个简单的文本编辑器。

当时我没有对这个文本编辑器做权限限制,也就是任何知道编辑器网址的人都可以在线编辑网页,非常危险。

于是我就考虑用PHP会话(Session)来实现登录才可以使用编辑器,然而在本地测试的时候发现虽然登录成功后设置了Session值,但是其他页面却读不到这个值。理论上Session是存在于服务器的信息,只要同一个网站的不同页面都可以使用的。

后来查了一下资料才发现,原来所有需要使用Session的页面头部都需要用session_start()来开启本页面的Session功能,因为PHP是不会主动使用Session的,需要手工开启,或者对服务器进行设置。
继续阅读“PHP设置了Session之后在其他页面读取不到的原因”

PHP在引号前面添加反斜杠的原因及PHP去除反斜杠的办法

昨天用PHP做了个读写html文档的小程序,本地测试正常但是传到网站后发现,提交内容保存的时候会自动在双引号前面增加一个反斜杠“\”,而且每保存一次增加一个反斜杠,很是郁闷。

当然做这个只是为了参加电商圈的网站进行更新,因为懒得装cms和博客程序了,就直接用php在线修改html文档来更新文字吧。

从网上搜了一下原来是PHP程序为了防止注入或者溢出,通过PHP 指令 magic_quotes_gpc自动在双引号、单引号、反斜杠、NULL前面添加反斜杠“\”。
继续阅读“PHP在引号前面添加反斜杠的原因及PHP去除反斜杠的办法”

给wordpress的留言板网址增加跳转功能,防止权重流失

用过Wordpress的朋友都知道,在给WP的博客留言的时候输入网址,留言显示的时候就会在自己昵称上增加一个锚链接。

这个好处呢就是可以查看评论该文章的朋友的网站,但是缺点就是因为首页显示最新的五条评论,自然就增加了五个外链。如果都是朋友的也就罢了,乱七八糟的网址都加上的话,容易让自己的博客权重流失,甚至留言的网址如果被降权了,那么有可能会连累自己的博客。

那么是不是有办法像类似zblog一样的既可以访问到留言者的网址又可以避免权重流失。

那就是做一个跳转。

方法很简单:
继续阅读“给wordpress的留言板网址增加跳转功能,防止权重流失”