Typecho for BAE

1、下载官方 10.8.15 版本,解压。 http://typecho.googlecode.com/files/0.8(10.8.15)-release.tar.gz 2、删除 install 目录 及 install.php 文件。 3、下载 typecho_bae_config.zip 解压。 typecho_bae_config.zip 4、修改 typecho_bae.sql 第 130 行(有注释),改为自己 BAE 上的域名,使用 BAE 自带的 phpmyadmin 将些 sql 导入, 注意 uft-8 格式。 ...

十月 21, 2012

让PHP更快的提供文件下载

一般来说, 我们可以通过直接让 URL 指向一个位于 Document Root 下面的文件, 来引导用户下载文件. 但是, 这样做, 就没办法做一些统计, 权限检查, 等等的工作. 于是, 很多时候, 我们采用让 PHP 来做转发, 为用户提供文件下载. ...

十月 12, 2012

PHP判断客户端是否使用代理服务器及其匿名级别

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。 具体来说,就是看 HTTP_VIA 字段,如果这个字段设置了,说明客户端使用了代理服务器。 匿名级别可以参考下表来判断。 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一、没有使用代理服务器的情况: REMOTE_ADDR = 您的 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 二、使用透明代理服务器的情况:Transparent Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 您的真实 IP 这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。 三、使用普通匿名代理服务器的情况:Anonymous Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 代理服务器 IP 隐藏了您的真实 IP,但是向访问对象透露了您是使用代理服务器访问他们的。 四、使用欺骗性代理服务器的情况:Distorting Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 代理服务器 IP (补充:这个字段由代理服务器填充,有时会填充网关信息等) HTTP_X_FORWARDED_FOR = 随机的 IP 告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机 IP 代替您的真实 IP 欺骗它。 五、使用高匿名代理服务器的情况:High Anonymity Proxies REMOTE_ADDR = 代理服务器 IP HTTP_VIA = 没数值或不显示 HTTP_X_FORWARDED_FOR = 没数值或不显示 完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。 除此之外,可以通过 proxy judges 总 结其他一些可供参考的判定信息,一遍于在实践中加以利用。 最后写一个 php 例子,仅供大家参考: ...

八月 24, 2012

Typecho中改var文件夹路径后,插件无法使用的解决办法

今天在使用 70 的 google_code_svn 插件时,发现一个问题: 明明我的 vps 已经开启了 curl ,但是始终提示 对不起, 您的主机不支持 php-curl 扩展而且没有打开 allow_url_fopen 功能, 无法正常使用此功能 本地测试好着,放服务器上就出问题了。 ...

八月 14, 2012

linux 修改ssh端口

vi /etc/ssh/sshd_config 找到 1# What ports, IPs and protocols we listen for 2Port 22 修改为自己的 端口号即可 1:wq 保存、退出 /etc/init.d/ssh restart

八月 10, 2012

PHP另类方法 生成随机字符串

1function getRandStr($n=6){ 2 $str = ""; 3 for( $i=0; $i<$n; $i++ ){ 4 $case = rand(0, 2); 5 switch($case){ 6 case 0: 7 /* ASCII 97-122 a-z */ 8 $str .= chr(rand(97, 122)) ; 9 break; 10 case 1: 11 /* ASCII 65-90 A-Z */ 12 $str .= chr(rand(65, 90)) ; 13 break; 14 case 2: 15 /* ASCII 48-57 0-9 */ 16 $str .= chr(rand(48, 57)) ; 17 break; 18 } 19 } 20 return $str; 21} 22 23echo getRandStr(32);

七月 31, 2012

BaiduBox MP3插件 For Typecho

好久没打理过博客了,一个字,忙!最近终于有点时间了,但是发现自己还是闲不下来,各种折腾。。。 背景: 刚好最近要给泰山大人做个博客,不用说,程序肯定 typecho,但是皮肤得自己弄。在做皮肤时,看到论坛里面好像有人要播放器,就随手写了这个 BaiduBox 插件。 ...

七月 14, 2012

linux下 一键安装 subversion

安装方法 1wget -c http://mrasong.com/attachment/2012/05/subversion-1.6.18.sh && chmod +x subversion-1.6.18.sh && ./subversion-1.6.18.sh 下载:subversion-1.6.18.sh 使用方法 1/etc/init.d/subversion {start|stop|restart|reload} 修改配置 /home/data/svn/main/conf/svnserve.conf 1[general] 2### 匿名访问 3anon-access = none 4# auth-access = write 5 6### 用户文件 7password-db = passwd 8 9### 权限文件 10authz-db = authz 11 12### svn 名称 13realm = MY SVN 14 15[sasl] 16### 这些可以默认 17# use-sasl = true 18# min-encryption = 0 19# max-encryption = 256 添加用户 /home/data/svn/conf/passwd ...

五月 26, 2012

Wordpress多用户系统 站点及文章访问量缓存方法

1/** 2 * 博客、文章访问量缓存 3 * useage: makeCount(int 博客ID [, int 文章ID [, int 更新间隔(1800s) [, int 博客访问量 [, int 文章访问量]]]] ) 4 * @author MrAsong 2012-04-26 5 */ 6function makeCount($bid=1, $pid=0, $update_interval=1800, $num_home=50, $num_post=15){ 7 global $wpdb; 8 9 $count_file = ABSPATH . 'cache/blogcount_'.$bid.'.js' ; 10 11 if( $json = @file_get_contents($count_file) ){ 12 $c = json_decode($json,true); //获取数据 13 }else{ //如果不存在,创建count文件 14 $c = array( 15 'create' => time(), //上次更新时间 16 'blogcount' => 0 17 ); 18 } 19 20 if( $pid == 0 ){ // 判断是否为首页 21 $c['blogcount'] = $c['blogcount'] + 1 ; //count+1 22 23 if( $c['blogcount'] >= $num_home && (time()-$c['create']) > $update_interval ){//更新博客访问量 24 $sql = "UPDATE $wpdb->blogs SET count=count+{$c['blogcount']} WHERE blog_id=$bid"; 25 $wpdb->query($sql); 26 $c['create'] = time(); 27 $c['blogcount'] = 0; 28 } 29 }else{ 30 $c['post'][$pid]['c'] = isset($c['post'][$pid]['c']) ? ($c['post'][$pid]['c'] + 1) : 1 ; 31 $c['post'][$pid]['t'] = isset($c['post'][$pid]['t']) ? $c['post'][$pid]['t'] : time(); 32 if( $c['post'][$pid]['c'] >= $num_post && (time()-$c['post'][$pid]['t']) > $update_interval ){//更新博客访问量 33 $sql = "UPDATE $wpdb->posts SET count=count+{$c['post'][$pid]} WHERE ID=$pid"; 34 $wpdb->query($sql); 35 unset($c['post'][$pid]); //删除此元组 36 } 37 } 38 39 if($fp = @fopen($count_file, 'wb')) { 40 @fwrite( $fp, json_encode($c) );//写入json 41 fclose($fp); 42 } 43 44}

五月 3, 2012

分享下昨天想到的一个jquery标题循环滚动效果

分享下昨天想到的一个 jquery 标题循环滚动效果 只是一个思想,可以在此基础上自己改造下。 1<div> 2 <ul id="last_activities"> 3 <li>title.11111</li> 4 <li>title.22222</li> 5 <li>title.33333</li> 6 <li>title.44444</li> 7 </ul> 8</div> 9<script 10 type="text/javascript" 11 src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js" 12></script> 13<script type="text/javascript"> 14 function scroll() { 15 var tmp = $("#last_activities").find("li").first(); 16 tmp.remove(); 17 $("#last_activities").find("li").first().hide().fadeIn("slow"); 18 $("#last_activities").append(tmp); 19 //$("#last_activities").find("li").first().hide('300'); 20 } 21 $(function () { 22 setInterval("scroll()", 3500); 23 }); 24</script>

四月 16, 2012