首页
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
更多
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
Search
1
全网首发-小米AX6000路由器解锁ssh并固化ssh+2.5G有线mesh组网+公网访问路由后台+红米AX6/小米AX6/AX3600/AX6000/AX9000全系列适用
6,798 阅读
2
青龙面板必装依赖及青龙各种问题解决
3,928 阅读
3
NAS一键批量清除重复文件
3,540 阅读
4
群辉DSM7.0.1安装bootstrap后解决wget: error while loading shared libraries: libgnuintl.so.8: cannot open shared object file: No such file or directory
1,602 阅读
5
《爱情公寓4》全集高清迅雷下载
899 阅读
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
登录
Search
标签搜索
wordpress
News
iphone
vb
iOS
technology
渗透
QQ
php
talk
JavaScript
hack
Typecho
NAS
福利
c++
diy
c
免杀
评测
Jonty
累计撰写
275
篇文章
累计收到
979
条评论
今日撰写
0
篇文章
首页
栏目
闲言碎语
学习
福利
技术百科
WordPress
Typecho
软件资源
iPhone
Android
PC软件
CODE
C
VB
PHP
NAS
青龙
页面
闲言碎语
个人导航
文章归档
友情链接
留言簿
关于
网络电视
云盘
统计
推荐
付费资源
朋友圈集赞
二维码生成
音乐下载
用户登录
登录
搜索到
10
篇与
的结果
2015-01-05
完美解决All in One SEO Pack对中文支持不友好的问题
大家都知道All in One SEO Pack是wordpress的一个搜索引擎优化的插件,但它对中文支持不友好。修改它的代码可以完美支持中文。 All in One SEO对英文支持很好的。因为它只考虑的单字节语言的情况,没有考虑多字节(例如中文等非英文的语言)的情况。问题介绍All in One SEO Pack只截取英文空格(" ")之前的内容作为description(描述)的内容,但是我们写中文博客,多数不会在文章中出现英文空格,更别说在开头的恰当位置了,所以中文博客用它就就悲剧了,只生成很短的描述,甚至不生成描述。解决方法(最新版)在{wordpress目录}/wp-content/plugins/all-in-one-seo-pack/aioseop.class.php文件中搜索function trim_excerpt_without_filters方法,类似这样的:```cssfunction trim_excerpt_without_filters( $text, $max = 0 ) { $text = str_replace( ']]>', ']]>', $text ); $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text ); $text = wp_strip_all_tags( $text ); if ( !$max ) $max = $this->maximum_description_length; $len = $this->strlen( $text ); if ( $max < $len ) { if ( function_exists( 'mb_strrpos' ) ) { $pos = mb_strrpos( $text, ' ', -($len - $max) ); if ( $pos === false ) $pos = $max; if ( $pos > $this->minimum_description_length ) { $max = $pos; } else { $max = $this->minimum_description_length; } } else { while( $text[$max] != ' ' && $max > $this->minimum_description_length ) { $max--; } } } $text = $this->substr( $text, 0, $max ); return trim( stripslashes( $text ) ); } ```使用下面的代码替换掉上面的代码即可。```cssfunction trim_excerpt_without_filters( $text, $max = 0 ) { $text = str_replace( ']]>', ']]>', $text ); $text = preg_replace( '|\[(.+?)\](.+?\[/\\1\])?|s', '', $text ); $text = wp_strip_all_tags( $text ); if ( !$max ) $max = $this->maximum_description_length; $len = $this->strlen( $text ); if ( $max < $len ) { if ( function_exists( 'mb_strrpos' ) ) { $pos = mb_strrpos( $text, ' ', -($len - $max) ); if ( $pos === false ) $pos = $max; if ( $pos > $this->minimum_description_length ) { $max = $pos; } else { $max = $this->minimum_description_length; } } else { while((ord($text[$max]) & 0x80) != 0 && (ord($text[$max]) & 0x40) == 0 && $max > $this->minimum_description_length ) { $max--; } } } $text = $this->substr( $text, 0, $max ); return trim( stripslashes( $text ) ); } ```解决原理wordpress的博客多数都是UTF8格式的,那么我们只需要研究下UTF8格式就好了,当然如果使用gbk或者跟utf8不兼容的格式,那么这个方法是不可行的。UTF-8是一种变长的编码方式。它可以使用1~4个字节表示一个符号(字),根据不同的符号而变化字节长度。 UTF-8的编码规则很简单,只有二条: 对于单字节的符号,字节的第一位设为0,后面7位为这个符号的unicode码。因此对于英语字母,UTF-8编码和ASCII码是相同的。 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的unicode码。 下表总结了编码规则,字母x表示可用编码的位。```cssUnicode符号范围 | UTF-8编码方式 (十六进制) | (二进制) --------------------+--------------------------------------------- 0000 0000-0000 007F | 0xxxxxxx 0000 0080-0000 07FF | 110xxxxx 10xxxxxx 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx``` 那么我们只要以一个字的第一个字节处结束(不包含该字节)就能获取完整的字符串了,也不会有乱码产生。 从上面的编码规则可以看出,如果一个字节的最高位为0,或者前两个高位都为1,那么这个字节一定是一个字的第一个字节。
2015年01月05日
97 阅读
2 评论
0 点赞
2014-12-14
WordPress 一键生成填写评论信息的代码
经常要逛很多的博客,评论时填写评论信息是很繁琐和麻烦的,为了省去麻烦,我们可以通过 JS 代码来帮助我们一键填写评论信息(昵称、邮箱、网址)。[butdown href="http://pan.baidu.com/s/1pJLogcV"]下载地址[/butdown] [btnheart href="https://nobb.cc/autoinfo.html" target="_blank"]在线版[/btnheart] 打开生成工具,填写自己的评论信息,然后点击“生成代码”,将“快速填写WP评论信息”的字样拖动到收藏夹即可自动填写评论。以后在能评论的页面点击收藏夹就能快速填写评论信息啦!
2014年12月14日
100 阅读
12 评论
0 点赞
2014-11-15
WordPress无插件反垃圾评论:小墙
小墙原理和功能其原理可以简单理解为:添加一个隐藏的资料框(属性为 display:none 的 textarea),因为用户是看不到的,如果该区域被填满则判断为 Spam。另外,小墙还在后台提供了spam 的基本资料,包含请求( REQUEST_URI )、来路( HTTP_REFERER )、IP、操作方式,,可提供下一步加强防护的参考。使用 WP Anti Spam 小墙的方法效果出色,免插件,将以下代码复制到主题的 functions.php 中即可 //Anti-Spam 防止垃圾评论 class anti_spam { function anti_spam() { if ( !current_user_can('read') ) { add_action('template_redirect', array($this, 'w_tb'), 1); add_action('init', array($this, 'gate'), 1); add_action('preprocess_comment', array($this, 'sink'), 1); } } // 设栏位 function w_tb() { if ( is_singular() ) { // 非中文语系 if ( stripos($_SERVER['HTTP_ACCEPT_LANGUAGE'], 'zh') === false ) { add_filter( 'comments_open', create_function('', "return false;") ); // 关闭评论 } else { ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#", "textarea$1name=$2w$3$4/textarea>",$input);') ); } } } // 检查 function gate() { $w = 'w'; if ( !empty($_POST[$w]) && empty($_POST['comment']) ) { $_POST['comment'] = $_POST[$w]; } else { $request = $_SERVER['REQUEST_URI']; $way = isset($_POST[$w]) ? '手动操作' : '未经评论表格'; $spamcom = isset($_POST['comment']) ? $_POST['comment'] : ''; $_POST['spam_confirmed'] = "请求: ". $request. "\n方式: ". $way. "\n内容: ". $spamcom. "\n -- 记录成功 --"; } } // 处理 function sink( $comment ) { // 不管 Trackbacks/Pingbacks if ( in_array( $comment['comment_type'], array('pingback', 'trackback') ) ) return $comment;// 已确定为 spam if ( !empty($_POST['spam_confirmed']) ) { // 方法一: 直接挡掉, 将 die(); 前面两斜线删除即可. //die(); // 方法二: 标记为 spam, 留在数据库检查是否误判. add_filter('pre_comment_approved', create_function('', 'return "spam";')); $comment['comment_content'] = "[ 小墙判断这是Spam! ]\n". $_POST['spam_confirmed']; $this->add_black( $comment ); } else { // 检查头像 $f = md5( strtolower($comment['comment_author_email']) ); $g = sprintf( "http://%d.gravatar.com", (hexdec($f{0}) % 2) ) .'/avatar/'. $f .'?d=404'; $headers = @get_headers( $g ); if ( !preg_match("|200|", $headers[0]) ) { // 没头像的列入待审 add_filter('pre_comment_approved', create_function('', 'return "0";')); //$this->add_black( $comment ); } } return $comment; } // 列入黑名单 function add_black( $comment ) { if (!($comment_author_url = $comment['comment_author_url'])) return; if (strpos($comment_author_url, '//')) $comment_author_url = substr($comment_author_url, strpos($comment_author_url, '//') + 2); if (strpos($comment_author_url, '/')) $comment_author_url = substr($comment_author_url, 0, strpos($comment_author_url, '/')); update_option('blacklist_keys', $comment_author_url . "\n" . get_option('blacklist_keys')); } } $anti_spam = new anti_spam();```
2014年11月15日
81 阅读
5 评论
0 点赞
2013-12-05
vb截包,发包知识及三大利器的使用
目录第一章:截包知识,本章主要介绍用HttpWatch软件截取网络数据包的方法及技巧 第二章:发包知识,本章主要介绍数据包的构成 第三章:三大利器的使用,本章主要介绍vb使用xmlhttp对象、webbrowser控件、inet控件进行Post发包、Get发包的方法第一章本文要用到的截包工具是HttpWatch,其他软件使用方法都差不多这里不再阐述。 软件下载地址: http://pan.baidu.com/s/1269w8 下载后请注意压缩包内的httpwatch.lic为授权文件,安装完成后把httpwatch.lic复制到安装目录里面> 安装完成后打开IE-工具-HttpWatch(IE6的直接能在主界面看到不用进工具里了),打开该软件,如图所示: 点击右上角的,软件界面会分离出另外一个窗口 我来介绍下按钮的功能, 平常用到的就3个按钮,代表开始截取、停止截取、清除截取的数据 再来介绍下面的界面: 平常用到的是Qverview、Content、Stream,Qverview的可以查看Post过去的详细目标地址,Content查看请求回来的返回值,Stream查看数据包信息! 第二章先发一段数据,我们来分析它```basic POST /?login HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */* Referer: https://passport.baidu.com/?login&tpl=mn Accept-Language: zh-cn Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 663; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022) Host: passport.baidu.com Content-Length: 236 Connection: Keep-Alive Cache-Control: no-cache Cookie: tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu.com%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=123465&safeflg=0&username=sunshinebean&verifycode=&mem_pass=on``` 关于Http头的构成我不阐述,详见: http://hi.baidu.com/absky_cxb/blog/item/f28065017032760a738da5cb.html 这里主要讲Post包的构成及比较重要的Http头参数 Http头里的Referer参数,简单的说就是来路,然后目标服务器能知道你这个Http请求是哪个页面请求过去的,有些服务器就是判断来路的所以这个参数比较重要 Http头里的Content-Type参数,提交的是网页信息可以是application/x-www-form-urlencoded,假如提交图片信息这个参数也会随之变成data Post的包参数全部用&符号隔开的,=号后面的是参数的值。有些参数是固定不变的有些却是随机改变的,这些参数80%能在网页源码里找到,10%能在cookie里找到,10%能在JS里构造(这个比较麻烦要会分析JS),在上面这段数据里变动的就帐号跟密码,别的参数都是固定的,当然这个结论要多次分析获得。比如这里的包, username=sunshinebean,password=123465就对应百度的帐号跟密码 第三章一:VB创建Xmlhttp对象```basic Private Function GetHtmlStr$(StrUrl$, switch%) '获取源码 Dim XmlHttp Set XmlHttp = CreateObject("Microsoft.XMLHTTP") XmlHttp.Open "GET", StrUrl, True XmlHttp.send stime = Now '获取当前时间 While XmlHttp.ReadyState 4 DoEvents ntime = Now '获取循环时间 If DateDiff("s", stime, ntime) > 3 Then GetHtmlStr = "": Exit Function '判断超出3秒即超时退出过程 Wend GetHtmlStr = StrConv(XmlHttp.ResponseBody, vbUnicode) Set XmlHttp = Nothing End Function ``` 这个是我自己写的一个函数,主要作用是获取指定网页的源码 XmlHttp.Open "GET", StrUrl, True "GET"是数据的请求方式,还有种就是POST提交数据写成"POST" StrUrl是指定的网址,GET请求时写要GET的目的网址,POST时写提交的目的地址 True是异步,False是同步,区别就是同步是等待数据全部获取后再显示,所以会卡,而异步则不会卡,所以推荐用异步比较好 XmlHttp.setRequestHeader "Referer", RefUrl 指定来路,上章已经提到过Referer参数的重要性了, RefUrl就写截包截来的那个来路 XmlHttp.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded" 这个上章也提到过,是类型,一般都是按截的包里面的写,网页的话直接写成这样就好:"application/x-www-form-urlencoded" XmlHttp.send "XXX" 这里的XXX就是post的包内容,Get的话这个是空的,POST的话把包的内容写在这里 然后该函数返回POST的返回信息,我们一般可以在返回值里提取出特定的东西来判断执行某样东西是否成功 二:webbrowser 先看段代码:```basic Private Sub Command1_Click() Dim URL$, Flags&, TargetFrame$, PostData() As Byte, Headers$ URL = "https://passport.baidu.com/?login" Flags = 0 TargetFrame = "" PostData = "tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu.com%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=123456&safeflg=0&username=sunshinebean&verifycode=" PostData = StrConv(PostData, vbFromUnicode) Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf WebBrowser1.Navigate URL, Flags, TargetFrame, PostData, Headers End SubPrivate Sub Form_Load() WebBrowser1.Navigate "http://baidu.com" End Sub``` Webbrowser有个Navigate方法,参数是这样的: object.Navigate URL [Flags,] [TargetFrameName,] [PostData,] [Headers] 拿出MSDN,查之,如下```basic URL: Required. A string expression that evaluates to the URL, full path, or Universal Naming Convention (UNC) location and name of the resource to display.Flags: Optional. A constant or value that specifies whether to add the resource to the history list, whether to read from or write to the cache, and whether to display the resource in a new window. It can be a combination of the following constants or values. Constant Value Meaning navOpenInNewWindow 1 Open the resource or file in a new window. navNoHistory 2 Do not add the resource or file to the history list. The new page replaces the current page in the list. navNoReadFromCache 4 Do not read from the disk cache for this navigation. navNoWriteToCache 8 Do not write the results of this navigation to the disk cache.TargetFrameName: Optional. String expression that evaluates to the name of an HTML frame in URL to display in the browser window. The possible values for this parameter are: _blank Load the link into a new unnamed window. _parent Load the link into the immediate parent of the document the link is in. _self Load the link into the same window the link was clicked in. _top Load the link into the full body of the current window. A named HTML frame. If no frame or window exists that matches the specified target name, a new window is opened for the specified link.PostData: Optional. Data to send to the server during the HTTP POST transaction. For example, the POST transaction is used to send data gathered by an HTML form to a program or script. If this parameter does not specify any post data, the Navigate method issues an HTTP GET transaction. This parameter is ignored if URL is not an HTTP URL. Headers Optional. A value that specifies additional HTTP headers to send to the server. These headers are added to the default Internet Explorer headers. The headers can specify things like the action required of the server, the type of data being passed to the server, or a status code. This parameter is ignored if URL is not an HTTP URL.``` URL 指定需要使用的网页。 flags 指定是否将该资源添加到历史列表、或通过高速缓存读写,将该资源显示在一个新窗口中、或这些方式的组合。 targetframename 指定目标显示区的名称。 postdata 指定需要发送到 HTTP的Post的数据。 headers 指定需要发送的 HTTP 标题。 整合了下就是这样。PostData构造方法一样,就是要特别注意的是数据要转成vbFromUnicode才能提交 三,INET控件 我想这个控件大家应该不陌生吧,很多VB写的程序啊软件都用到了这个控件,这家伙封装了Http和Ftp协议使用起来很方便所以用的人很多。代码也很简洁呵呵~~```basic Dim PostDate As String If Inet1.StillExecuting = True Then Exit Sub PostDate = "tpl_ok=&next_target=&tpl=mn&skip_ok=&aid=&need_pay=&need_coin=&pay_method=&u=http%3A%2F%2Fwww.baidu.com%2F&return_method=get&more_param=&return_type=&psp_tt=0&password=123456&safeflg=0&username=sunshinebean&verifycode=" Inet1.Execute "https://passport.baidu.com/?login", "POST", PostDate, "Referer: https://passport.baidu.com/?login&tpl=mn" & vbCrLf & "Content-Type: application/x-www-form-urlencoded"``` Inet和xmlhttp的好处就是能提交Referer URL是Post的目标地址, operation是Get方法或者Post方法,data 是Post的数据, requestHeader是Referer来路和Content-Type 下面讲下数据的返回:```basic 在inet的StateChanged事件里返回数据,判断state是不是12,原因: 0 未报告状态icHostResolvingHost 1 控件正在寻找指定主机的IP地址icHostResolved 2 控件已成功找到指定主机的IP地址icConnecting 3 控件正在与指定主机进行连接icConnected 4 控件已成功与指定主机连接icRequesting 5 控件正在向主机发出请求icRequestSent 6 控件已成功向主机发出请求icReceivingResponse 7 控件正在从主机接收反馈信息icResponseReceived 8 控件已成功从主机接受反馈信息icDisconnecting 9 控件正在与主机断开icDisconnected 10 控件已与主机断开icError 11 在与主机通信的过程中发生了错误icResponseCompleted 12 请求结束且数据已经接收到 ``````basic Dim strData$ Dim bDone As Boolean: bDone = False vtData = Inet1.GetChunk(1024, icString) Do While Not bDone strData = strData & vtData DoEvents vtData = Inet1.GetChunk(1024, icString) If Len(vtData) = 0 Then bDone = True End If Loop``` 这里返回string类型的源码。。要是二进制或者UTF8的话还要简单 定义一个byte数组就行了 Dim Buff() As Byte Buff = Inet1.GetChunk(0, icByteArray) 获取到的图图保存在路径下面再用picture加载就是图图了。UTF8的源码用解码函数进行解码即可解决乱码的问题,UTF8解码函数:```basic Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long Private Const CP_UTF8 = 65001 Function Utf8ToUnicode(ByRef Utf() As Byte) As String Dim lRet As Long Dim lLength As Long Dim lBufferSize As Long lLength = UBound(Utf) - LBound(Utf) + 1 If lLength
2013年12月05日
85 阅读
4 评论
0 点赞
2013-08-15
wordpress添加贴心欢迎语
大家都知道,网站要贴和用户是很重要的,各种贴心的欢迎语是必不可少的,更重要的是我们要根据访问时间自动判断应该用什么话去欢迎游客,这里就有一个很人性化的代码啦,其实已经用了很久啦,你们有没有发现捏?```php ```
2013年08月15日
78 阅读
2 评论
0 点赞
2013-08-14
各种过安全狗一句话木马aspx,asp,php一句话
几个变性的asp–过防火墙 过狗效果都不错```basic ``````basic ```这个是90sec发的```basic ```密码-7几个变性的php–过防火墙 过狗效果都不错:```basic ``````basic ``````basic ``````basic ```这个是90sec发的```basic ``` 密码-7 aspx的 过狗效果不怎么样—不过我认为能支持aspx 百分之8/90支持asp90sec发的```basic ``` 密码-7```basic // ```密码是webadmin
2013年08月14日
69 阅读
0 评论
0 点赞
2013-08-14
wordpress用了缓存插件wp-postviews失效的解决办法
用了w3 total cache后发现文章浏览次数基本上没变化,也不知道什么原因。一天无意看到有人说开启缓存插件,postviews会失效!然后很郁闷,也没找到解决办法。今天问了神奇海域,没想到他有解决办法,然后传给了我一份修改版的postviews!在这里说声感谢啊!!!然后我问他怎么修改的,他说是按照wp-super-cache的解决办法!wtc测试有效! 附上解决办法:方案一:既然我们要记录每个页面的访问量,那么只要在日志和页面禁用缓存就可以了。在WP-Super-Cache后台找到“Accepted Filenames & Rejected URIs”然后按下图设置勾选Single Posts和Pages保存即可。这样日志页和独立页面都不会开启缓存,访问就能正常记录了。缺点就是这两个页面起不到缓存加速的效果了, 点评:此方案等于废掉了该插件的基本功能。于是,有了下面的方案二:在后台禁用WP Super Cache插件。 删除/wp-content/plugins/目录的wp-super-cache目录。 删除wp-content目录下面的cache目录。 最后一步,最重要的一步,千万别忘了!修改根目录下的wp-config.php,把下面一行删掉:```basic define(’WP_CACHE’, true); ``` 好了,现在文章又可以计数了。点评:卸掉此插件了,当然一切恢复如常了嘛。如果不废掉,二者能否和谐共生呢?请看下面的方案三:进入插件wp-postviews,打开wp-postviews.php这个文件,找到代码```basic if(defined(’WP_CACHE’) && WP_CACHE) ``` 替换为```basic if((defined(’WP_CACHE’) && WP_CACHE) || (defined(’COSMETA’) && COSMETA)) ``` 测试有效。注:此方法对二次开发的 WP PostViews Plus 仍然有效。点评:和谐社会,插件也要学会共存。如果此法在你那还是无效,继续看下面的:方案四:如果执意需要缓存插件的话,那就换用cos-html-cache 试试看吧。该插件由江东开发,之所以要推荐这款插件,更重要的在于江东大侠本人同时开发了相关的一个WP-PostViews的JS版,二者出自同一人,问题定然完美解决。简言之,就是cos-html-cache + WP-PostViews的JS版组合。 [down href="http://pan.baidu.com/share/link?shareid=550778284&uk=1547026424"]下载[/down]
2013年08月14日
101 阅读
0 评论
0 点赞
2013-08-13
为WordPress主题添加Pirobox图片暗箱特效,同时使用Css Sprite进行优化压缩!
首先下载我做好的压缩包: [down href="http://www.henghengzhu.com/wp-content/uploads/2012/11/pirobox.zip"]下载地址[/down] 优化调用添加Pirobox 图片暗箱特效教程:1.把下载包里的pirobox.css和pirobox.js放到当前主题的根目录,把4个图片放到主题的images文件夹里2.使用Notepad++打开header.php,在里面添加下面的代码(添加位置挨着上面的
2013年08月13日
74 阅读
0 评论
0 点赞
2013-08-07
wordpress评论添加算术验证码
(一)在主题目录的functions.php添加如下代码:function spam_provent_math(){ $a=rand(5,15); $b=rand(5,15); echo "<input type='text' name='sum' id='sum' size='22' tabindex='3' value='动手又动脑,哦也 !' onfocus='if (this.value != \"\") {this.value = \"\";}' onblur='if (this.value == \"\") {this.value = \"动手又动脑,哦也 !\";}' /> = $a + $b (<font color='#0088DD'>防止机器人评论</font>)" ."<input type='hidden' name='a' value='$a'/>" ."<input type='hidden' name='b' value='$b'/>"; } function spam_provent_pre($spam_result){ $sum=$_POST['sum']; switch($sum){ case $_POST['a']+$_POST['b']:break; case null:wp_die('亲,算个结果撒');break; default:wp_die('算错啦⊙﹏⊙b汗'); } return $spam_result; } //注册用户or管理员则不需要验证 if(!is_user_logged_in() && $comment_data['comment_type']==''){ add_filter('preprocess_comment','spam_provent_pre'); }(二)在主题目录下的comments.php(不同的主题可能评论框的位置不同,有的主题可能在functions.php里面)中调用上述代码://根据是否是管理员来决定是否显示验证码 <!--?php if(!isset($_COOKIE['comment_author_email_'.COOKIEHASH]))spam_provent_math();?-->补充几句:如果验证码错误的时候页面变形,则把case null:wp_die('亲,算个结果撒');break; default:wp_die('算错啦⊙﹏⊙b汗');改成case null:err(__('亲,算个结果撒')); default:err(__('算错啦⊙﹏⊙b汗'));
2013年08月07日
91 阅读
0 评论
0 点赞
2013-03-14
病毒分析方法简要总结入门篇
第 1 章病毒分析病毒分析是将病毒行为还原的过程,在此过程中病毒的行为流程将被分解,病毒的每一步操作都有可能影响正常的操作系统配置或文件。病毒分析的基础是依托于逆向工程的基础,所以在做病毒分析工作之前好好学习下逆向工程知识。
2013年03月14日
187 阅读
0 评论
0 点赞