September 7 2011

抓取邮件地址

Filed under: PHP - ferry @ 09:49 am

/*
** 功能:抓取给定url里的邮件地址,并写入到txtname文本文件里
** 参数:$url
** 返回值:
*/
function findEmail($url,$tname=’emails’) {
$conarr=file($url);
if(is_array($conarr)) {
for($i=0; $i if(checkStr($conarr[$i],'@')) {
preg_match_all('/[a-zA-Z]([A-Za-z0-9]*[-_\.]?[A-Za-z0-9]+)*@([A-Za-z0-9]*[-_]?[A-Za-z0-9]+)+[\.][A-Za-z]{2,3}([\.][A-Za-z]{2,3})?/', $conarr[$i], $matches);
if(!empty($matches[0])) {
$matches[0]=array_unique($matches[0]);
$arr[]=$matches[0][0];
}
}
}
if(!empty($arr)) {
$arr=array_unique($arr);
$total=sizeof($arr);
$email=implode (",", $arr);
$email=$email.",\n";
//写入txt
$txtname=$tname.'.txt';
$fp=fopen($txtname,'a');
fwrite($fp,$email);
fclose($fp);
echo "from: ".$url." I get ".$total." email address.";
} else {
echo "from: ".$url." I get no any email...";
}
}
}

/*
** 功能:抓取给定url里所有的链接地址
** 参数:$url
** 返回值:返回所有链接地址的数组array
*/
function findUrl($url) {
//echo $url;
$webarr=array('www.w3.org','maps.google.com','map.baidu.com','maps.google.nl');
$conarr=file($url);
if(is_array($conarr)) {
foreach($conarr as $key=>$val) {
if(substr_count($val,’http://’)) {
preg_match_all(”/http(s)?:\/\/[^\s”‘\>)< ]*/",$val, $murl);
foreach($murl[0] as $k=>$v) {
$uarr[]=$v;
}
}
}
}
$uarr=array_values(array_unique($uarr));
foreach($uarr as $key=>$val) {
@$pu=parse_url($val);
if($pu) {
if((!in_array($pu[’host’],$webarr)) && (preg_match(’/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$/’, $pu[’host’]))) { //$pu[’host’]!=’www.w3.org’
$urlArr[]=$val;
}
}
}
return $urlArr;
}

March 28 2011

Javascript版的in_array()函数

Filed under: xhtml/css - ferry @ 13:56 pm

Array.prototype.in_array=function(ele){
for(var i=0;i if(this[i]===ele){
return 1;
}
}
return 0;
}
使用:
var extname=strr.substr(strr.indexOf(’.')+1);
var extnameArr=[’jpg’,'gif’,'png’,'JPG’,'GIF’,'PNG’];

extnameArr.in_array(extname)

June 17 2010

题集一

Filed under: PHP - ferry @ 16:30 pm

1 请说明 PHP 中传值与传引用的区别。什么时候传值什么时候传引用?
答:传值只是把某一个变量的值传给了另一个变量,而引用则说明两者指向了同一个地方。

2 在PHP中error_reporting这个函数有什么作用?
答: The error_reporting() function sets the error_reporting directive at runtime. PHP has many levels of errors, using this function sets that level for the duration (runtime) of your script.

3 简述如何得到当前执行脚本路径,包括所得到参数。
答:
< ?php
echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
echo "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
?>

4 有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)
答:
< ?php
//冒泡排序
function BubbleSort($ary) {
for($i=0; $i < count($ary) ; $i++) {
for($j=$i+1; $j < count($ary) ; $j++) {
if($ary[$j] < $ary[$i]){
$tmp=$ary[$j];
$ary[$j]=$ary[$i];
$ary[$i]=$tmp;
}
}
}
return $ary;
}
$str = array(3,6,1,5,9,0,4,6,11);
print_r(BubbleSort($str));
?>

5 在开发过程中用什么方法来加快页面的加载速度.
答:要用到服务器资源时才打开,
及时关闭服务器资源,
数据库添加索引,
页面可生成静态,
图片等大文件单独服务器,
使用代码优化工具。

如何保护自己网站的cron.php不被非法使用

Filed under: PHP - ferry @ 16:30 pm

cron.php由于暴露在Drupal的根目录下,使得所有人都可以访问。然而,有时CRON.PHP中承载着许多业务逻辑,管理员往往不希望被其它用户访问到。该怎么办呢?

1. 使用Apache自带的.htaccess文件,在其中加上下面这几行

Order deny,allow
Allow from xxx.xxx.xxx.xxx
Allow from 127.0.0.1
Deny from all

其中的xxx.xxx.xxx.xxx是管理员自己的IP,这样,这个文件就只允许管理员自己访问了

2. 把cron.php改名
这个听得是不是很搞笑,不过真的,改个名字,一切都OK了。。当然建议你不要改成那些比较容易被记住的名字。

3. 修改cron.php
在其中加上一个诸如密码一样的访问控制,比如,管理员可以访问cron.php?password=123456,然后在cron.php里判断是否有当前参数,如果有,则允许访问。
以上方法应该都行,欢迎大家热烈讨论

转载请注明: www.drupalbar.com

March 8 2010

Php路径问题及其解决方法

Filed under: PHP - ferry @ 11:22 am

ECSHOP取当前站点所在根目录方法
< ?php
define('ROOT_PATH', str_replace('xxx.xxx', '', str_replace('', '/', __FILE__)));
?>

更多参考:
1.将所有文件放在一个文件夹下
将所有文件放在一个文件夹下,那么就不会存在路径问题了。但是,这绝对是个馊主意!!除非你写一个小的不能再小的项目,不然请不要尝试这种方法,没有结构的系统太可怕了!

2.使用绝对路径
注:PHP中的include和require使用的是文件系统的绝对路径,如“c:\wwwroot\yourproject\index.php”
实现方法:一个函数+一个常量:dirname()和__FILE__。
(require_once dirname(__FILE__).‘/’.‘../lib/smarty/functions.php’; )
或者
setting.php
< ?php
if(!defined(ABSPATH))
define(‘ABSPATH’,dirname(__FILE__).‘/’);
?>
引用页.php
< ?php
require_once ABSPATH.‘lib/smarty/functions.php’;
?>

3.设置Apache的include_path参数
Apache的include_path参数保存的是require/include的读取目录,在上面的错误信息里,include_path包含了两个位置:
1) “.”表示从当前文件所在的目录中加载
2) “C:\php5\pear”表示从C盘的php5/pear目录下加载。
php函数库为我们提供了set_include_path()函数用于设置include_path参数。通过set_include_path()函数,我们可以自定义加载位置(ZendFramework中就是使用set_include_path()函数来解决路径问题)。

From:http://www.myleoliu.com/archives/6.html

January 13 2010

生成随机字符串函数

Filed under: PHP - ferry @ 18:22 pm

方法一:

function randomkeys($length) {
    $string="a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-A-B-C-D-E-F-J-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z-0-1-2-3-4-5-6-7-8-9";
    $array=explode(’-',$string);
    $vcode='’;
    for($i=0; $i<$length; $i++) {
        $rn=rand(0,61);
        $vcode.=$array[$rn];
    }
    return $vcode;
}
echo randomkeys(4);

方法二:

function randomkeys($length)
{
    $pattern = ‘1234567890abcdefghijklmnopqrstuvwxyz
                ABCDEFGHIJKLOMNOPQRSTUVWXYZ,./&?#:@~[]{}-_=+)(*&amp;^%$£"!’;    //字符池
    for($i=0;$i<$length;$i++)
    {
        $key .= $pattern{mt_rand(0,35)};    //生成php随机数
    }
    return $key;
}
echo randomkeys(4);

方法三:

function randomkeys($length) {
    $output='’;
    for ($a = 0; $a < $length; $a++) {
        $output .= chr(mt_rand(33, 126));    //生成php随机数
    }
    return $output;
}
echo randomkeys(4);

后一页»
Get free blog up and running in minutes with Blogsome
Theme designed by Ferry Chu
Website Hit Tracking
Copyright © 2007 Chuyujiang