分类目录归档:玩技术

泪奔-终于解决IIS中的PHP出现PHP has encountered an Access Violation的问题

PHP在Windows Server 2003 服务器配置好IIS+PHP+MYSQL环境后运行 PHPMyAdmin 提示:PHP has encountered an Access Violation at xxxxx 百度了N个网页找到的全是一Copy了N次的同一个方法,什么权限什么PHP.INI了屁用没有,最后终于在一博友日志中找到有效解决办法,Very Easy 的方法。

这个问题似乎是:PHP已经遇到了一个访问冲突在xxxx

问题出在libmysql.dll上, 因为PHP和MYSQL都有libmysql.dll,并且是不一样的文件,我在配置IIS+PHP环境时是按照Chinaz的一文章,那文中说安装完 Mysql后再把libmysql.dll 复制到C:\Windows\system32下,结果这步就是导致问题的原因了。

解决问题方法很简单,把C:\Windows\system32 下的libmysql.dll换成PHP目录下的就OK了。

Discuz X2.5相关备忘

1、在直接操作了数据库字段更新后,由于某些变量是被缓存的,所以页面上不会当即展示最新的数据,如需立即展示可更新缓存,比如要更新用户组相关的数据,可在代码中加入

loadcache('usergroups');

2、把形如 2012-12-03 17:40:00 这样格式的时间转化为Unix时间戳

strtotime($_GET['dateline']);

把时间戳转化为格式化日期

 

$l['dateline'] = dgmdate($l['dateline']);

$date = dgmdate($_G[timestamp],'u');

 

301跳转

showmessage('301跳转', 'yoururl', array(), array('header' => true));

3、把一个php数组转字符串

$biuuu = array('b','i','u','u','u');
print_r(implode('',$biuuu)); 

4、字符串编码转换

$keywordGbk = iconv( "UTF-8", "gbk" , $keyword);

5、添加关联链接(这个功能太强大了)

if(!$_G['setting']['relatedlinkstatus']) {
	$_G['relatedlinks'] = get_related_link('article');
} else {
	$content['content'] = parse_related_link($content['content'], 'article');
}

6、加载ucenter功能

loaducenter();

7、cookies的使用

//设置cookies 
dsetcookie($var, $value = '', $life = 0, $prefix = 1, $httponly = false);

//获取cookies
getcookie($key);

8、常用的SQL语句

$thread = DB::fetch_first("SELECT qxzy,pcdm FROM ".DB::table('zytb_360')." WHERE 1 AND tid = '$tid'  ");

 

	$list = array();
	$query = DB::query("SELECT id,yxmc,desc1,yxdh,sscs,pxf,gjdm FROM ".DB::table('zytb_quanguo_xkx_2012')." WHERE 1 ");
	while($l = DB::fetch($query)){
		$list[] = $l;
	}
//总数获取
$count =  DB::result_first("SELECT count(id) FROM ".DB::table('tebale1')." WHERE 1  ");
DB::query("INSERT INTO ".DB::table('zytb_order')." (orderid, payment, money, uid, status, createdateline,completedateline,goodid,type) VALUES ('$orderid','$payment','$money','$_G[uid]', '$status', '$_G[timestamp]', '','$tid','$type')");

$id = DB::insert_id();

 

DB::query("UPDATE ".DB::table('zytb_360')." SET realname = '$realname', school = '$school', gender = '$gender', kldm = '$kldm', pcdm = '$pcdm', zfs = '$zfs', dateline = '".TIMESTAMP."' WHERE tid = '$tid' ");
DB::delete('zs_meng_report', array('id' => $id,'type' => $type));//删除
//post
if(submitcheck('submit')) {
	$message = cutstr(dhtmlspecialchars(stripslashes($_POST['message'])), 150, ''); //截取150个字节的内容
	DB::query("INSERT INTO ".DB::table('mood_wall')." (uid, username, dateline, message) VALUES ('$_G[uid]', '$_G[username]', '".TIMESTAMP."', '".daddslashes($message)."')");
	showmessage('发表成功。', 'mood.php?mod=list');
}
//{FORMHASH}

9、include


require libfile('post/albumphoto', 'include');

//对应的路径为:/source/include/post/post_albumphoto.php

10、memcache的使用


$allow = memory('check');//看memcache是否可用
if($allow == 'memcache'){
	$str = memory('get', 'abc');
	
	if(empty($str)){
		
		//some codes
		
		//写入
		$ret = memory('set', 'abc', $aa, $ttl);//$ttl 默认为0,可设置最长的失效时间为30天,即2592000秒
		
	}else{
		
		$xxx = $str;//直接取来用
		
		
	} 
}

//其它操作方法
memory('rm', 'abc');//删除

163data.com.cn原来是这么回事

不少站长不知道163data.com.cn是什么,在搜索引擎上搜索也找不到几条满意的结果,但是每天有大量来自163data.com.cn的用户访问自己的网站,怕被采集或者被攻击,所以很着急。

  我之前也不知道,后来在使用一款WordPress的插件时(装了个WordPress打分插件), 得知自己的IP地址也属于xxx.dynamic.163data.com.cn的形式。所以xxx.163data.com.cn形式的IP地址,其实 是每个中国电信上网用户的IP反向解析地址,中国电信之所以要把IP地址进行动态反向解析,主要是为了防止垃圾邮件,减少黑客攻击等等。 继续阅读163data.com.cn原来是这么回事

showWindow() AJAX弹窗使用小结

由于是新手,对AJAX不是很熟,Discuz! X 的这个功能也只好自己一步步琢磨了。

经研究发现,url加上&infloat=yes&handlekey=test1&inajax=1&ajaxtarget=fwin_content_test1,网页即会变成XML格式,代码如下:

<root>
<![CDATA[
<p>你好,我是内容。</p>
]]>
</root>

这样的话再在页面的showWindow()函数里写上url,点击就不会出现 内部错误,无法显示的悲催提示了。

不过仍需注意的是,模板的头尾必须得用 <!–{template common/header}–> 、<!–{template common/footer}- 而不能用!–{subtemplate common/header}–>,不然将无法正常使用。

V3海量格式化数据抓取备忘

第一步
pingshi_share_list.php // 列出原始数据列表
http://localhost/pingshi_share_list_view.php?schoolid=id

第二步
pingshi_share_list_view.php // 列出所有的url 便于V3抓取

$str = explode("分隔符",trim($row_Recordset1['message'])); //原始数据转换成数组
$result = count($str); //计算数组的个数
for ($i=0; $i< $result - 1 ; $i++) // 列出可用的url
{
  echo "http://localhost/x.php?schoolid=$_GET[schoolid]&num=$i";
}

echo $str[$_GET[num]] // 输出单个格式化数据

还有更简洁方便的办法:

$arr = explode(",",trim($row_Recordset1['message'])); //原始数
foreach ($arr as $value)//带键值 $arr as $key => $value
{
  echo "<a href='http://xxx.ashx?key=".$value."'>".$row_Recordset1['aid']."_".$value."</a><br />";
}

备忘录 2012/09/25

pingshi_share 抓取

公司电脑
任务ID 333 ,剩余抓取区间 1124234-1133807(已抓完) 1138066-1200000(家里2号电脑已抓)
任务ID 327 ,剩余抓取区间 1027726-1037300(家里2号电脑已抓) 1041822-1100000(家里2号电脑已抓)
任务ID 327 ,1300000-1320000(已抓) 1320000-1327715(家里2号电脑正在抓取)

自己常用的更新某些字段的SQL语句

1、更新院校国家代码(部标代码)

UPDATE pre_college_teacher
SET pre_college_teacher.yxdm =
(SELECT yxmc2yxdm_2.yxdm FROM yxmc2yxdm_2
WHERE 1
AND
yxmc2yxdm_2.yxmc = pre_college_teacher.yxmc
)
WHERE 1
AND pre_college_teacher.yxdm IS NULL
UPDATE pre_college_teacher
SET pre_college_teacher.yxdm =
(SELECT
pre_college_yxmc2yxdm.yxdm
FROM
pre_college_yxmc2yxdm
WHERE 1
AND
pre_college_yxmc2yxdm.yxmc =
pre_college_teacher.yxmc
)
WHERE 1
AND pre_college_teacher.yxdm
IS NULL

UPDATE pre_college_teacher_tw
SET pre_college_teacher_tw.yxdm =
(SELECT pre_college_school_tw.yxdm FROM pre_college_school_tw WHERE 1 AND pre_college_school_tw.yxmc = pre_college_teacher_tw.yxmc) WHERE 1 AND pre_college_teacher_tw.yxdm = ''

2、更新本科专业代码
UPDATE pre_college_school_major_intro
SET pre_college_school_major_intro.zydm =
(SELECT pre_chsi_zy_bk.zydm FROM pre_chsi_zy_bk WHERE 1 AND pre_chsi_zy_bk.zymc = pre_college_school_major_intro.zymc) WHERE 1 AND pre_college_school_major_intro.zycc = 1

继续阅读自己常用的更新某些字段的SQL语句

CentOS上通过iptables防火墙屏蔽IP

iptables -I INPUT -s 123.137.0.0/16 -j DROP

iptables -I INPUT -s 14.136.0.0/16 -j DROP

iptables -I INPUT -s 50.2.0.0/16 -j DROP

iptables -I INPUT -s 173.245.0.0/16 -j DROP

iptables -I INPUT -s 96.0.0.0/8 -j DROP

 

屏蔽单个IP
iptables -I INPUT -s 60.186.84.229 -j DROP

服务器上的一个网站最近被来自宁波的一个人猛烈攻击,影响了其它站点的正常运行,实在是可恶啊,干脆直接把他所在的IP段统统给屏蔽了!看你还怎么着!