2013年4月16日星期二

iwebsns 防止恶意注册,防止垃圾灌水的办法

最近使用了iWebSns,刚建站没几天,已经出现了好多个恶意注册的用户,通常用户名都是杂乱的字符加数字。
 
首先我先试着进入后台管理关闭注册,可是过两天发现恶意代码仍然可以注册成功,可见其完全没有通过注册页面注册。
嗯,这好办,加一个Session,凡是不通过页面,站外提交注册的一律禁止。方法如下:
 
1.修改iwebsns根目录下面的 modules.php 在第五行后面添加
//设置SESSION防止站外提交
$_SESSION["postFlag"]="acctc";
 
2.修改 /action/reg_act.php  添加判断session是否存在的语句。
大概在第104行,红色为添加内容
//写入数据 ,判断session是否存在,禁止站外提交
if(session_is_registered("postFlag")){
$user_ico=($user_sex==0)?"skin/$skinUrl/images/d_ico_0_small.gif":"skin/$skinUrl/images/d_ico_1_small.gif";
dbtarget('w',$dbServs);
$sql="insert into $t_users (user_name,user_pws,user_sex,user_email,user_add_time,user_ico,invite_from_uid,is_pass,lastlogin_datetime,birth_year , birth_month , birth_day ,login_ip )"
." values('$user_name','$user_pws',$user_sex,'$user_email','".constant('NOWTIME')."','$user_ico',$invite_fromuid,$is_pass,'".constant('NOWTIME')."','','','','$_SERVER[REMOTE_ADDR]')";
if(!$dbo->exeUpdate($sql)){
action_return(0,$re_langpackage->re_reg_false,"-1");
}
 
这种方法限制了站外提交,但仍然有部分恶意注册不能避免。
于是想到注册机通常生成随即的用户名,以避免重名用户导致注册失败,生成的用户名通常都是字符+数字的组合。
那么我限制用户只能用中文注册,是否就可以避免垃圾注册了呢?      
方法如下:
1.修改 /action/reg_act.php文件,增加判断用户名是否中文的代码。
.........
if(strlen(get_argp("user_name"))<4){
   action_return(0,$re_langpackage->re_right_name,"-1");
}
//检查用户名必须是全中文
$namestr = get_argp("user_name"); 
if(!preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$namestr)) {
 action_return(0,$re_langpackage->re_right_name,"-1");
 }
 
2.修改iwebsns的模版文件 /templates/default/modules/users/user_reg.html
把javaScript脚本修改验证只允许输入中文,红色为修改部分
// 检测会员用户名
var user_name = document.getElementsByName('user_name')[0];
var user_name_message = $('user_name_message');
var user_name_status = false;
var user_name_reg = /^[\u4E00-\u9FA5]*$/; //用正则表达式/[\u4E00-\u9FA5]/表示中文
 
3.修改语言包中的提示,在 /langpackage/zh/users.php 中。
 
自此,对iwebsns 防止恶意注册,防止垃圾灌水的修改完毕,实际使用效果还不错,
演示地址:www.acctc.com

2013年4月4日星期四

删除oracle所有空表

先把数据为空的表选出来
select 'drop table '||table_name||' ;' from user_tables where num_rows=0
 
将执行的结果再次执行

2013年4月3日星期三

Google Chrome浏览器离线下载,制作成绿色版,全屏显示

下载离线安装版
一直在用Google Chrome浏览器,不过安装过chrome的朋友都知道,从Google官方下载安装chrome,会先下载一个小的安装管理程序,安装时再从google下载所需的安装文件,速度很慢,很不爽。
 现在终于在网上找到了在官方下载Google Chrome浏览器的方法。其实,下载chrome离线安装包的方法很简单的。
 只需要在原来的下载网址上加上 standalone=1 参数,你下载下来的就是离线安装包,而不是几百K的安装管理程序。
 如,原来的下载地址为 :  
 http://www.google.com/chrome/eula.html
更改后变为  :  
 
中文版安装包的地址为  :  
 
全屏显示
google chrom浏览器使用F11快捷键可以打开全屏模式,但是目前我想做到的是自动开启全屏模式,不用每次都按F11,google了一下,google chrome是可以做到的,非常方便,
windows下面可以这样做:,新建一个快捷方式,在"请键入项目的位置"里面填入下面的内容
"C:\Users\''your name\AppData\Local\Google\Chrome\Application\chrome.exe" --kiosk http://www.google.com
请把""C:\Users\''your name\AppData\Local\Google\Chrome\Application\chrome.exe" "改为你自己的安装路径,如果不清楚,直接复制chrome的快捷方式里面的路径即可
之后打开这个快捷方式就是全屏打开google主页,
linux里面如果想全屏打开某个网页,直接在terminal里面打开
google-chrome --kiosk url
即可
这个得吐槽下,用google-chrome --help是看不到kiosk这个选项的.
 
制作成绿色版
解压1得到的文件,获得一个名为 chrome.7z 的压缩文件,再次解压,得到 Chrome-bin 文件夹。
3、复制 Chrome-bin 里的 Chrome-bin 的 4.0.202.0 文件夹(其它版本的也是类似的名字)到你喜欢的地方,并将 Chrome-bin 文件夹里的 chrome.exe 也复制到这个文件夹里。这样,这个新的文件夹的内容应该如下所示:
Google Chrome 绿色版
4、接着,我们来自定义Chrome数据存放的位置,不然,它默认是要存放在C盘的,这显然不是我们所希望的。在3所建的文件夹中,给 chrome.exe 建立一个快捷方式,并修改目标为 "x:xxx\chrome.exe" �user-data-dir=chrome,这样,Chrome 就会把数据存放在 chrome 文件夹下了。
至此,一个绿色的 Google Chrome 就完成了。你可以把它复制到U盘上,随意走动了