存档

‘Discuz!’ 分类的存档

使用CDN加速后对PHP获取IP的影响

2010年4月16日 yanglu 没有评论

一直都是使用DISCUZ的获取客户端IP的函数,但今日发现网站使用CDN加速后,网站统计出了问题,获取到的IP有部分是CDN节点的IP,而程序统计是以唯一IP判断,导致统计到的IP比实际IP少很多。改动获取IP的函数后恢复正常。
原获取IP的方法:

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
$onlineip = $_SERVER['REMOTE_ADDR'];
}
 
preg_match("/[\d\.]{7,15}/", $onlineip, $onlineipmatches);
$onlineip = $onlineipmatches[0] ? $onlineipmatches[0] : 'unknown';
unset($onlineipmatches);

阅读全文…

分类: Discuz!, PHP 标签: , ,

php配置变量写入配置文件的方法

2009年10月30日 yanglu 3 条评论

有些常用的配置变量写入MYSQL比较麻烦,可以写入一个php配置文件,在需要的地方引入这个配置文件即可。写入方法如下(摘入):

$configfile = @file_get_contents('./config.inc.php');
			$configfile = trim($configfile);
			$configfile = preg_replace("/[$]dbhost\s*\=\s*[\"'].*?[\"'];/is", "\$dbhost = '$dbhost';", $configfile);
			$configfile = preg_replace("/[$]dbuser\s*\=\s*[\"'].*?[\"'];/is", "\$dbuser = '$dbuser';", $configfile);
			$configfile = preg_replace("/[$]dbpw\s*\=\s*[\"'].*?[\"'];/is", "\$dbpw = '$dbpw';", $configfile);
			$configfile = preg_replace("/[$]dbname\s*\=\s*[\"'].*?[\"'];/is", "\$dbname = '$dbname';", $configfile);
			$configfile = preg_replace("/[$]adminemail\s*\=\s*[\"'].*?[\"'];/is", "\$adminemail = '$adminemail';", $configfile);
			$configfile = preg_replace("/[$]tablepre\s*\=\s*[\"'].*?[\"'];/is", "\$tablepre = '$tablepre';", $configfile);
			$configfile = preg_replace("/[$]cookiepre\s*\=\s*[\"'].*?[\"'];/is", "\$cookiepre = '".random(3)."_';", $configfile);
 
			@file_put_contents('./config.inc.php', $configfile);
分类: Discuz!, PHP 标签: ,

DZ获取客户端IP的方法

2009年10月30日 yanglu 1 条评论

discuzs是一款不错的php开源社区软件,很多优秀的代码可以拿来借鉴。下面是从common.inc.php中提取出来的获取客户端IP的代码。

if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
	$onlineip = getenv('HTTP_CLIENT_IP');
} elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
	$onlineip = getenv('HTTP_X_FORWARDED_FOR');
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
	$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
	$onlineip = $_SERVER['REMOTE_ADDR'];
}
分类: Discuz!, PHP 标签: ,

网站换域名后要用到的php301转向代码

2009年9月7日 yanglu 3 条评论

只需要把下面的代码加到网站核心文件里,即可对全站的所有页面进行域名301转向,友好搜素引擎转向。

$url_old="yanglu.org"; //旧域名,不带"http://"和"/",可不带www
$url_new="www.1qq.cn/"; //新域名,不带"http://",以"/"结尾
$bbs_dir="bbs"; //原域名的BBS目录名,根目录请为空
 
if ($bbs_dir)
{
	$bbs_count=strlen($bbs_dir)+2;
	$url_add=substr($_SERVER["REQUEST_URI"],$bbs_count);
} else {  
	$url_add=substr($_SERVER["REQUEST_URI"],1); 
}
 
if (stripos($_SERVER["SERVER_NAME"],$url_old))
{	
	$url301="http://".$url_new.$url_add; 
	header("HTTP/1.1 301 Moved Permanently"); 
	header("Location:$url301"); 
	exit();
}

以DISCUZ!(所有版本)为例,只需要把此代码放置于include/common.inc.php的”<?”后面即可。

分类: Discuz!, PHP, SEO技术 标签:

Call to undefined function curl_init解决方法

2009年7月8日 yanglu 1 条评论

  在网上下载了一个模拟登陆discuz论坛的php程序范例,试运行时出现“Call to undefined function curl_init”这个错误提示,没有定义的函数,也就是php还没打开对curl_init函数的支持。Google了一番终于解决了,方法如下:

  以windows下的php+apache为例。 阅读全文…

分类: Discuz!, PHP 标签:

密码保护:个性化修改Discuz!伪静态网址

2009年6月18日 yanglu 要查看留言请输入您的密码。

这是一篇受密码保护的文章。您需要提供访问密码:


分类: Discuz! 标签: , ,

让Mysql能够远程连接

2009年5月3日 yanglu 没有评论

  A1:

    远程连接到MySQL需要做的

    1. 进入MySQL,创建一个新用户xuys:
   

    格式: grant 权限 on 数据库名.表名 用户@登录主机 identified by “用户密码”;
    grant select,update,insert,delete on *.* to xuys@192.168.88.234 identified by “xuys1234″;
   
    查看结果,执行:
    use mysql;
    select host,user,password from user;
   
    可以看到在user表中已有刚才创建的xuys用户,host字段表示登录的主机,其值可以用IP,也可用主机名,将host字段的值改为%就表示在任何客户端机器上能以xuys用户登录到MySQL服务器,建议在开发时设为%.
    update user set host = ‘%’ where user = ‘xuys’;
阅读全文…
分类: Discuz!, 互联网应用 标签:

发帖随机奖惩插件(发帖机遇) For DZ7.0

2009年1月6日 yanglu 5 条评论

Discuz!插件发布
插件名称 发帖随机奖惩插件(发帖机遇) For DZ7.0
适用版本 Discuz!7.0
语言编码 GBK
插件作者 修改自DZ6.1
版权所属 原作者
插件简介 发帖时随机事件对作者进行奖惩,修改自原插件的6.1版,解决了短消息通知问题。 阅读全文…

分类: Discuz! 标签: ,

友情链接点击次数无刷新统计FORDZ7.0

2008年12月28日 yanglu 1 条评论

  本插件可分为3个部分安装,分别是1.功能实现部分,此部分为必须;2.前台显示部分,此部分主要是在前台显示点击次数,为可选安装;3.后台管理部分,此部分主要是能在后台友情链接管理每项的点击次数,也为可选安装,不过本人推荐安装此部分。 阅读全文…

分类: Discuz! 标签: , ,

Allowed memory size exhausted错误的解决方法

2008年12月25日 yanglu 没有评论

  今天在本地用tools.php导入disucz6.0数据准备升级7.0时,出现了以下错误
Fatal error: Allowed memory size of 10485760 bytes exhausted (tried to allocate 3824 bytes) in /……/tools.php on line **
  大概意思就是程序运行使用的内存超出配额限制,用Google找出了3种解决方法: 阅读全文…

分类: Discuz! 标签: ,