存档

‘学习’ 分类的存档

PHP特殊的函数调用方式

2011年12月29日 无风的飘逸 没有评论

<?php
$zencart="strlen";
echo $zencart('iash21iawhdj98UH3');
?>

以上代码等同于

<?php
$zencart="iash21iawhdj98UH3";
echo strlen($zencart);
?>

Share
分类: PHP 标签:

LINUX下IF的使用参数

2011年12月5日 无风的飘逸 没有评论

[ -a FILE ]  如果 FILE 存在则为真。
[ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真。
[ -c FILE ]  如果 FILE 存在且是一个字特殊文件则为真。
[ -d FILE ]  如果 FILE 存在且是一个目录则为真。
[ -e FILE ]  如果 FILE 存在则为真。

[ -f FILE ]  如果 FILE 存在且是一个普通文件则为真。
[ -g FILE ]  如果 FILE 存在且已经设置了SGID则为真。
[ -h FILE ]  如果 FILE 存在且是一个符号连接则为真。
[ -k FILE ]  如果 FILE 存在且已经设置了粘制位则为真。
[ -p FILE ]  如果 FILE 存在且是一个名字管道(F如果O)则为真。
[ -r FILE ]  如果 FILE 存在且是可读的则为真。
[ -s FILE ]  如果 FILE 存在且大小不为0则为真。
[ -t FD ]  如果文件描述符 FD 打开且指向一个终端则为真。
[ -u FILE ]  如果 FILE 存在且设置了SUID (set user ID)则为真。
[ -w FILE ]  如果 FILE 如果 FILE 存在且是可写的则为真。
[ -x FILE ]  如果 FILE 存在且是可执行的则为真。
[ -O FILE ]  如果 FILE 存在且属有效用户ID则为真。
[ -G FILE ]  如果 FILE 存在且属有效用户组则为真。
[ -L FILE ]  如果 FILE 存在且是一个符号连接则为真。
[ -N FILE ]  如果 FILE 存在 and has been mod如果ied since it was last read则为真。
[ -S FILE ]  如果 FILE 存在且是一个套接字则为真。
[ FILE1 -nt FILE2 ]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。
[ FILE1 -ot FILE2 ]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。
[ FILE1 -ef FILE2 ]  如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。
[ -o OPTIONNAME ]  如果 shell选项 “OPTIONNAME” 开启则为真。
[ -z STRING ]  “STRING” 的长度为零则为真。
[ -n STRING ] or [ STRING ]  “STRING” 的长度为非零 non-zero则为真。
[ STRING1 == STRING2 ]  如果2个字符串相同。 “=” may be used instead of “==” for strict POSIX compliance则为真。
[ STRING1 != STRING2 ]  如果字符串不相等则为真。
[ STRING1 < STRING2 ]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。
[ STRING1 > STRING2 ]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。
[ ARG1 OP ARG2 ] “OP” is one of -eq, -ne, -lt, -le, -gt or -ge. These arithmetic binary operators return true if “ARG1” is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to “ARG2”, respectively. “ARG1” and “ARG2” are integers.UNIX Shell 里面比较字符写法:

-eq   等于
-ne    不等于
-gt    大于
-lt    小于
-le    小于等于
-ge   大于等于
-z    空串
=     两个字符相等
!=    两个字符不等
-n    非空串

Share
分类: Linux 技术 标签:

最新实战讲解.htaccess文件rewrite规则

2011年12月4日 无风的飘逸 没有评论

.htaccess文件大家都不陌生吧。不认识的自己去搜一下……顺便告诉你,这是个好东西,值得一学。

似乎网上关于.htaccess编写方法的教程很有限,相信博主们也没有几个是自己写的吧?

我在这里就搜了几个常用规则,总结一下rewrite规则的用法。当然这只是.htaccess功能的一小部分,但是相当实用。

如果熟练掌握rewrite规则的编写,能够加强对网站URL的控制,对用户体验、SEO都十分有利。

 

一、防盗链功能

1 RewriteEngine On
2 RewriteCond %{HTTP_REFERER} !^http://(.+.)?mysite.com/ [NC]
3 RewriteCond %{HTTP_REFERER} !^$
4 RewriteRule .*.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L]

逐行讲解一下:

1.打开Rewrite功能。有可能服务器设置里已经是全局下打开了,但是多写也没事。

2.RewriteCond指令,定义生效条件,用于寻找匹配条件的地址。后面内容用正则表达式匹配。代表含义是发送的请求不由mysite.com而来,那就是盗链啦。末尾的[NC]代表忽略大小写。

3.发送请求的主机前缀不为空。

4.RewriteRule指令,定义重写规则,把匹配的地址按此规则重写。本例中把这些后缀为这些图片格式的,都替换到某一个图片下。[L]表示这是最后一段规则。

只这四行就实现了防盗链是不是很神奇(- -||),编写起来是不是又觉得复杂。

这里总结了几个常用参数(不是全部):

RewriteCond下:

[NC] 不分字母大小写

[OR] 用于连接下一条规则

 

RewriteRule下:

[R] 强制重定向,[R=code] code默认为302

[F] 禁用URL,返回HTTP 403 错误

[L] 这是最后一条规则,之后内容无用

还有一篇关于正则表达式的教程(很详细):http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm

 

二、网址规范化

1 Options +FollowSymLinks
2 rewriteEngine on
3 rewriteCond %{http_host} ^yourdomain.com [NC]
4 rewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

这个是把所有二级域名都重定向到www.yourdomain.com的例子,现在看来是不是很简单了?

需要注意的是,这里的Options +FollowSymLinks不是必须的,但在某些服务器如果不设置FollowSymLinks,可能引起500错误。

再来看一个好玩的重定向

1 RewriteEngine On
2 RewriteBase /
3 RewriteCond %{HTTP_USER_AGENT} (Googlebot)
4 RewriteRule ^ http://abc.com/ [R=301,L]

1.打开Rewrite功能。

2.RewriteBase指令,设置目录级重写的基准URL。可以理解成把该目录(这个.htaccess所在目录)假定为基准的URL前缀。本例中这样的写法无用。

3.RewriteCond指令。匹配所有USER_AGENT为Googlebot的发送请求。

4.RewriteRule指令。本例中把这些请求都重定向到了abc.com。

在本例中,这个配置应该是黑客所为,把google蜘蛛指向某个网站,等于伪造PR。

 

三、临时错误页面

当你的网站在升级、修改的时候,你最好让访客转到指定的页面,而不是没做完的页面或者是错误页。

这时我们做一个302转跳就好。

1 RewriteEngine on
2 RewriteCond %{REQUEST_URI} !/maintenance.html$
3 RewriteCond %{REMOTE_ADDR} !^123.123.123.123
4 RewriteRule $ /error.html [R=302,L]

1.继续打开Rewrite功能。- -|

2.REQUEST_URI,请求的URL值。这里指所有访问maintenance.html页面的请求。

3.REMOTE_ADDR,向服务器发送请求的IP地址。本例中此处应设为你自己的IP,这样就只有你能访问。

4.RewriteRule指令。本例中把这些请求都重定向到了error.html 。

在本例,我们总结几个常用的正则表达式和特殊符号。

(.*) 用于匹配某一区域内所有内容。如 abc/def/ghi 可用 (.*)/(.*)/(.*) 匹配。

([a-zA-Z_]+) 匹配英文单词,允许用-和_连接。

([0-9]+) 匹配多位数字,通常用于匹配ID。

([0-9]) 只匹配一位的数字。

^ 表示正则的开始

$ 表示正则的结束

 

四、重定向RSS地址到Feedburner

除了可以更改模板里的RSS地址外,.htaccess也能实现RSS地址的更改,并更加方便。

1 RewriteEngine on
2 RewriteCond %{HTTP_USER_AGENT} !FeedBurner    [NC]
3 RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
4 RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feed.onexin.net/yourname [R=302,NC,L]

有了上面的总结,本例其实就很简单了吧。

唯一要注意的是这样操作要确保填写正确的HTTP_USER_AGENT。其实你不常换模板的话。。可能还是直接改模板更省事。

在最后,为懒虫们推荐几个好东东:

在线.htaccess生成器http://tool.onexin.net/htaccess/

mod_rewrite模块中文参考手册http://help.onexin.net/apache/mod/mod_rewrite.html

P.S. 其实我以为rewrite也只是APACHE一个模块而已,做到边查边写足矣,实在不行直接去搜一个规则也未尝不可。没有必要费太大力气去学。不过其中的正则表达式还是非常实用的,值得深入学习

Share
分类: apache 标签:

关于css3在ie下的兼容性问题

2011年11月25日 无风的飘逸 没有评论

大家都知道现在已经是css3时代了,相信看到这篇文章的您也一定垂涎于

border-radius和box-shadow这样的属性吧。

虽然用上了ie-css3.htc 之后,可以感受到css3的强大,但是在实际使用中,大家一定非常头疼于不兼容

比如以下两段代码;

第一段:

.test {
width:560px;
height:400px;
background-color:#FFFFFF;
padding:10px 8px 6px;
border: 1px solid #ff0000;
margin-bottom:10px;
-moz-border-radius: 15px; /* Firefox */
-webkit-border-radius: 15px; /* Safari and Chrome */
border-radius: 15px; /* Opera 10.5+, future browsers, and now also Internet Explorer 6+ using IE-CSS3 */

-moz-box-shadow: 10px 10px 20px #000; /* Firefox */
-webkit-box-shadow: 10px 10px 20px #000; /* Safari and Chrome */
box-shadow: 10px 10px 20px #000; /* Opera 10.5+, future browsers and IE6+ using IE-CSS3 */

behavior: url(ie-css3.htc); /* This lets IE know to call the script on all elements which get the 'box' class */
}

<div id="sveinjoe">
<div>
这个页面是用以测试主机是否有正确的content-type。
</div>
</div>

经过测试,正常显示圆角和阴影,那么如果我对test的外围div设置背景之后,

#sveinjoe{
width:962px;
height:1000px;
margin:0 auto;
background-color:#FFFFFF;
}

 

效果就大大的不相同了,圆解和阴影都不见了,这里为了排除边框和底色颜色一致导致圆角看不到的可能,我把边框的颜色设置为了红色。但是还是没有显示。

所以初步结论是在多层DIV中,如果下一层的DIV设有背景的话,border-radius    box-shadow 失效;

Share
分类: CSS 标签:

ultra edit如何匹配星号

2011年9月23日 无风的飘逸 没有评论

ultra edit有正则替换功能,

但是*本身代表多个字符,比如在下面的例子中,如何表达星号呢?

删除文本中所有

/*  与*/之间的字符(包含/* 与 */)

这里有一解
/[*]*[*]/
可用[*]来代表星号本身。题解!

Share
分类: Windows 实战 标签:

zen-cart细节图紊乱解决方案

2011年8月18日 无风的飘逸 2 条评论

zen cart对产品细节图的识别可谓是非常先进。

它是根据主图,然后只要是图片名字以主图的名字开头的,或者放在以主图文件名(不包含扩展名)为名的文件夹里的图片都可以被识别为产品的细节图。

但是今天我碰到一个问题。

产品主图:   image1.jpg

产品细节图: image1_1.jpg  image1_2.jpg .....

图片目录中还存在其它产品的主图和细节图:

image2.jpg,    image10.jpg   image10_1.jpg   image11.jpg ……

结果程序把image10.jpg   image10_1.jpg   image11.jpg 等以image1开头的图片全部识别为产品图片的细节图。

解决方案:

修改细节图识别的那断代码。

打开includes/modules/ (或者 includes/modules/当前模板文件夹/)additional_images.php

找到 if(preg_match("/" . $products_image_base . "/i", $file) == 1) {

修改为:

if(preg_match("/" . $products_image_base . "_/i", $file) == 1) {

Share
分类: zen-cart 标签:

chrome ie firefox同时崩溃

2011年8月13日 无风的飘逸 没有评论

在打开像www.aol.com   just-ping.com  部分比较大型的网站的时候,chrome crash   firefox重启.

检查后发现问题出现在hosts里,可能是因为我的hosts文件里有关于twitter或者 google.com部分插件服务器的设置,而这些服务器的数据出现错误才导致的。

仔细测试了一下,问题出在以下这一串代码中

#Twitter
199.59.149.243 oauth.twitter.com199.59.149.243 twitter.com199.59.149.243 www.twitter.com199.59.149.243 mobile.twitter.com199.59.148.201 search.twitter.com199.59.148.139 userstream.twitter.com199.59.149.243 ssl.twitter.com199.59.149.243 status.twitter.com199.59.149.243 assets0.twitter.com199.59.149.243 assets1.twitter.com199.59.149.243 assets2.twitter.com199.59.149.243 assets3.twitter.com199.59.149.243 static.twitter.com184.29.36.124 platform.twitter.com219.76.10.138 platform0.twitter.com199.59.148.206 help.twitter.com199.59.148.206 support.twitter.com209.84.4.102 si0.twimg.com209.84.4.102 si1.twimg.com209.84.4.102 si2.twimg.com209.84.4.102 si3.twimg.com209.84.4.102 si4.twimg.com209.84.4.102 si5.twimg.com184.29.20.124 platform.twitter.com 199.59.148.243 scribe.twitter.com 199.59.148.96 mobile.twitter.com 199.59.148.138 betastream.twitter.com 199.59.149.209 api.twitter.com 199.59.149.210 api.twitter.com 199.59.149.209 status.twitter.com 199.59.149.210 upload.twitter.com

哪位高人可以测试出来具体是哪一条吗?

Share

你的firefox5不支持google toolbar了吗?

2011年8月9日 无风的飘逸 没有评论

你的firefox5不支持安装google toolbar了吗?

其实firefox有一个插件叫 Compatibility Reporter 你可以通过安装这个稳定性报告工具,使你的google toolbar再次运作起来。

方法就是,先安装 Compatibility Reporter 再安装google toolbar

Compatibility Reporter插件地址:  https://addons.mozilla.org/en-US/firefox/addon/add-on-compatibility-reporter/

Share
分类: 计算机技术学习 标签:

刚刚测试了一下我的网站的的更新频率

2011年8月1日 无风的飘逸 没有评论

刚刚测试了一下我的网站的的更新频率,谷歌还行,百度一般。

谷歌差不多一分钟就更新过来了,而且在首页。但是百度……用了半个多小时更新过来,而且没有排名。

可见谷歌的算法比较先进,和域名年龄有关,百度貌似只和它的VIP列表还有外链有关

Share
分类: SEO 标签:

提高外链相关性的文章

2011年7月14日 无风的飘逸 1 条评论

熊猫来了,那外链相关性高的外链越显得重要了,今天去学习了郑晖同志的外链心得,觉得蛮有道理的。转来共享一下。

两年多来,我都是在致力于外链的研究。大家知道,外链在英文SEO中的作用是不容忽视的。现在有一段顺口溜分享给大家。通过这个大家就会马上了解外链的其中一个作用。

你说你自己是什么,google 不一定认为你是什么!
只有别人说你是什么,google才会觉的你应该是什么!
如是要很多的人说你是什么 ,那么 google 就会觉的你是什么
如果很多是什么的什么说你是什么,那么 google就会确认你就是什么
如果很多google很喜欢的人(快照更新快,权重高)说你是什么的话,
那么google会认为你是什么,并且也会很喜欢你。(google的理解是物以类聚,人之常情!)

其实外链的作用就那么三点:加快快照的更新,权重的导入,诠释。如果这方面不理解。
简单说明一下:
快照更新:就是google蜘蛛会顺着你发的外链爬到你的网站,从而更新快照。(此处外链最好用类wordpress等更新快,权重高的第三方博客进行操作)
权重导入:其实一条google收录的外链就是对你网站的一种投票。(此处外链最好就是高PR的网站的首页链接)
诠释:就是通过外链告诉google是什么。(此处外链最好就是锚文本了)

下面进入外链的重点:

广泛性:语言,主题,IP

相关性:关键词,标题,内容。

拒绝链接农场(大熊猫算法专门K这类的网站):什么叫链接农场这里就不说了,大家google 或者 yahoo上搜,千万不要使用百度。

其实广泛性大家一看就明白,今天具体的讲讲相关性。

其实很多人以为:相关性就是行业相关,性质相关,如何才能让google认为你这个链接是有效而且是高效的?

如果你是一篇说:sport的文章与你的 football shirt有关系不?
如果是一篇 世界杯(W C)的文章,与你的 soccer jersey(美国语足球衣的意思)有关不?
从某种意久上说,有关!但是答案是否定的。

毕竟google 不是人,google 虽然有同意词库,但是毕竟一个词有好几种意思,google如何能知道:“减肥”在某种环境下等于“瘦身”,可能这个对于目标网站多一些关键词的变体是好的,但是对于外链而言,相关性而言,这种操作是不合理的。如果你要做相关性很强的锚文本外链,请直接把网站的标题写成包含关键词,然后文章里面也要多次出现这个关键词,降低信噪比,然后最后才是插入锚文本。这样子对google而言你这篇文章的相关性就很高了。那么所锚文本的链接质量就很高。

Share
分类: SEO 标签: