最近不知道为什么…orkut上总是有人加我!
出错历史:
我编写的代码从来没有顺利的执行过,可是由于本地环境和主机环境不一样,所以有的时候在本地测试合格放到主机上则不行,而有的时候则相反..
这次是一段函数出错了,错误提示:
xxx.php,把文件开头的空格全都去掉,如果是 UTF-8 格式保证文件头部没有 BOM。
如果不是这个原因,就要检查你的代码,在调用 header 命令之前,不要有任何输出。
我开始在所有的php页头查找bom,无果..后来用UltraEdit32(默认我是用Notepad++)从新全部保存了一遍无BOM格式.上传后问题依旧.没有办法,我建立了一个”del_bom.php”,代码如下:
$basedir = "."; //修改此行為需要檢測的目錄,點表示當前目錄
$auto = 1; //是否自動移除發現的BOM信息。1為是,0為否。
//以下不用改动
if ($dh = opendir($basedir))
{
while (($file = readdir($dh)) !== false)
{
if ($file != '.' && $file != '..' && !is_dir($basedir . "/" . $file))
echo "filename: $file " . checkbom("$basedir/$file") . "<br>";
}
closedir($dh);
}
function checkbom ($filename) {
global $auto;
$contents = file_get_contents($filename);
$charset[1] = substr($contents, 0, 1);
$charset[2] = substr($contents, 1, 1);
$charset[3] = substr($contents, 2, 1);
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191)
{
if ($auto == 1)
{
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return ("BOM found, automatically removed.");
}
else
{
return ("BOM found.");
}
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data)
{
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
?>
运行后还是不行,我想应该不是BOM的问题..我仔细看了一遍提示出错的XXX.php…发现提示的错误行代码我是这样写的:
if(mysql_query($sql))
{
echo 'var recorded = true; alert($ip);';
//设定Cookie值,设置1天后失效
setcookie("visited", true, time()+3600*24);
}
else //插入失败
{
echo 'var recorded = false; alert($ip);';
//设定Cookie值,失效时间为过去,即删除该Cookie
setcookie("visited", false, time()-3600*24);
}
花儿给我的提示是:在调用 header 命令之前,不要有任何输出
我想起PHP中stecookie前世不能echo的..但是无法,这段代码是必须的,我在CSDN上询问,专家给出解决办法,修改如下:
if(mysql_query($sql))
{
//设定Cookie值,设置1天后失效
setcookie("visited", true, time()+3600*24);
echo 'var recorded = true; alert($ip);';
}
else //插入失败
{
//设定Cookie值,失效时间为过去,即删除该Cookie
setcookie("visited", false, time()-3600*24);
echo 'var recorded = false; alert($ip);';
}
这段代码我之前也测试过,不行,错误提示:找不到$ip
无奈,我又询问了花儿解决办法.答复如下:
用 ob_start() ob_flush() 这套函数吧
正当我修改代码后要上传的时候,发现错误提示不见了.并且数据库中出现了点变化.
以前我用同一页面强制刷新后数据库中会增加一条记录,而现在不会了.我再用其他浏览器登录,数据库中又会增加一条数据.
那就是说说cookie的设置生效了.
到这里事件结束,可是我有点摸不着头脑为何..代码依然还是以前的代码…
等我查阅相关资料后补充这篇post.
在此感谢花儿
PS:后来又断断续续出现此问题,没有办法,加上了ob_start(); 代码..问题不在出现了…
这个问题花了不少时间来解决..中间不得不先关闭了站点和论坛.
说实话,我也不太想弄这两样东西.其实对于我来说有一个blog就足够了,可是一个CG站点毕竟是我们三个人的一个梦.so…我还是弄起来了.
闲话少说,说说关于这两样东西的静态化问题.
后台设置是傻瓜化的,我这里不赘述了.说说头文件吧.
PS:我以下的修改必须要求主机环境支持.htaccess和mod_rewrite这两个功能.否则怎么设置也白搭.
首先是SupeSite的.htaccess设置:
### Apache Web Server(虚拟主机用户)
###############################################################################
### 在开始以下设置之前,请首先咨询您的空间服务商
### 空间是否支持 Rewrite 以及是否支持对站点目录中 .htaccess 的文件解析
### 否则即便按照下面的方法设置好了,也无法使用
### 将 RewriteEngine 模式打开
RewriteEngine On
### 修改以下语句中的 /supesite 修改为你的SupeSite目录地址,如果程序放在根目录中,请将 /supesite 修改为 /
RewriteBase /supesite
### Rewrite 系统规则请勿修改
RewriteRule ^action/(.+)$ index.php?action/$1
RewriteRule ^i([0-9]+)(.*)$ index.php?action/viewspace/itemid/$1$2
RewriteRule ^t([0-9]+)(.*)$ index.php?action/viewbbs/tid/$1$2
RewriteRule ^([0-9]+)/tplid(.*)$ index.php?action/space/uid/$1/tplid$2
RewriteRule ^([0-9]+)/starttime(.+)$ index.php?action/spacelist/uid/$1/starttime$2
RewriteRule ^([0-9]+)/type(.+)$ index.php?action/spacelist/uid/$1/type$2
RewriteRule ^([0-9]+)(.*)$ index.php?action/space/uid/$1$2
RewriteRule ^index(.*)$ index.php
### 添加内容时,请遵照上面的提示,修改SupeSite所在的路径
### 然后保存。将 .htaccess 文件上传到SupeSite所在的目录中
### 进入SupeSite 系统设置,根据需要开启 URL 静态化 功能
###############################################################################
其次是论坛的.htaccess设置:
### Apache Web Server(虚拟主机用户)
###############################################################################
### 在开始以下设置之前,请首先咨询您的空间服务商
### 空间是否支持 Rewrite 以及是否支持对站点目录中 .htaccess 的文件解析
### 否则即便按照下面的方法设置好了,也无法使用
### 将 RewriteEngine 模式打开
RewriteEngine on
### 修改以下语句中的 /bbs 修改为你的论坛目录地址,如果程序放在根目录中,请将 /bbs 修改为 /
RewriteBase /Discuz!
### Rewrite 系统规则请勿修改
RewriteRule ^archiver/([a-z0-9\-]+\.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+)\.html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ viewthread.php?tid=$1&extra=page\%3D$3&page=$2
RewriteRule ^profile-(username|uid)-(.+)\.html$ viewpro.php?$1=$2
RewriteRule ^space-(username|uid)-(.+)\.html$ space.php?$1=$2
### 添加内容时,请遵照上面的提示,修改论坛所在的路径
### 然后保存。将 .htaccess 文件上传到Discuz!所在的目录中
### 进入Discuz!系统设置,根据需要开启 URL 静态化 功能
###############################################################################
利用Google API来完成访客地图标注是完成了,可是似乎遇到了一些问题.
在我的数据库中查询是有其他人来访的,可是由于地理位置的重叠,所以相同位置的地标被覆盖!
也就是说同地理位置的访客只显示第一位到访的地标以及其他IP信息等..
这似乎是一个蛮难缠的问题..
留到以后解决吧@现在睡觉了.
PS:由于服务器是美国的,所以时间上也出现了问题.默认以美国时间作为登录时间!头疼.





