当前位置:  编程技术>php
本页文章导读:
    ▪php写的关于静态页面的蜘蛛爬行记录的代码          有时,很想知道每天爬行了网站些什么页面,爬了几次,但本人网站都是静态页面,而且空间商的记录要每天最设保留日志第二天才会保留。     以下代码是通过伪静态的逆向,实现.........
    ▪有关php中循环跳出的一个问题      有关php中循环跳出的一个问题,现整理在这里,供路过的朋友参考哦。 代码如下: <?php //php当前循环为1,循环由里到外依次递增,break默认为1,例如跳出第2层循环 for ($i=0;$i<3;$i++){   .........
    ▪php写的登录时用户名与密码验证器      php写的登录时用户名与密码验证器,有需要的朋友可以参考下。 1、登录时对用户输入的用户名、密码进行验证   代码如下: <?php /**  * Validator for Login.  */ final class LoginValidator {     pr.........

[1]php写的关于静态页面的蜘蛛爬行记录的代码
    来源: 互联网  发布时间: 2013-12-24

    有时,很想知道每天爬行了网站些什么页面,爬了几次,但本人网站都是静态页面,而且空间商的记录要每天最设保留日志第二天才会保留。
    以下代码是通过伪静态的逆向,实现的有关静态页面的蜘蛛爬行记录的代码。
    供大家学习参考。

php文件:bot.php
 

代码如下:

<?php
      $useragent = addslashes(strtolower()($_SERVER['HTTP_USER_AGENT']));
      if (strpos($useragent, 'googlebot')!== false){$bot = 'Google';}
      elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense';}
      elseif (strpos($useragent,'baiduspider') !== false){$bot = 'Baidu';}
      elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou';}
      elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web';}
      elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO';}
      elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo';}
     elseif (strpos($useragent,'msn') !== false){$bot = 'MSN';}
     elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot';}
     elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu';}
     elseif (strpos($useragent,'yodaoBot') !== false){$bot = 'Yodao';}
     elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler';}
     elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_';}
     elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa';}
     elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎';}
     elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛';}
     if(isset()($bot)){
     $fp = @fopen('bot.txt','a');
     fwrite($fp,date('Y-m-d H:i:s')."\t".$_SERVER["REMOTE_ADDR"]."\t".$bot."\t".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["HTTP_X_REWRITE_URL"]."\r\n");
     fclose($fp);
     }
     $file=".".$_SERVER[HTTP_X_REWRITE_URL];
     $f_head=substr($file,-5);
     if($f_head==".html")
     {
         if(file_exists($file))
        {
           echo file_get_contents($file);
         }else
         {
          
         header('HTTP/1.1 404 Not Found');
        header("status: 404 Not Found");

         echo "该页面无法找到";
        }
   }
    else
     {
        header('HTTP/1.1 404 Not Found');
        header("status: 404 Not Found");
         echo "该页面无法找到";  
    }
?>

伪静态文件内容:
 

代码如下:

[ISAPI_Rewrite]

 # 3600 = 1 hour
 CacheClockRate 3600
 
 RepeatLimit 32
 
 # Protect httpd.ini and httpd.parse.errors files
 # from accessing through HTTP
 RewriteRule /index.html /index.php
 RewriteRule ^/article/(.*) /bot.php [L]
 RewriteRule ^/list/(.*) /bot.php [L]


    
[2]有关php中循环跳出的一个问题
    来源: 互联网  发布时间: 2013-12-24

有关php中循环跳出的一个问题,现整理在这里,供路过的朋友参考哦。

代码如下:

<?php
//php当前循环为1,循环由里到外依次递增,break默认为1,例如跳出第2层循环
for ($i=0;$i<3;$i++){
    foreach (array(1,2,3) as $val){    
        foreach (array(1,2,3) as $val){         
            echo "1层循环<br/>"; 
            break 2;  //跳出第2层循环        
        }
        echo "2层循环<br/>";
    }
    echo "3层循环<br/>";
}
//结果:
//1层循环
//3层循环
//1层循环
//3层循环
//1层循环
//3层循环
?>


    
[3]php写的登录时用户名与密码验证器
    来源: 互联网  发布时间: 2013-12-24

php写的登录时用户名与密码验证器,有需要的朋友可以参考下。

1、登录时对用户输入的用户名、密码进行验证
 

代码如下:

<?php
/**
 * Validator for Login.
 */
final class LoginValidator {

    private function __construct() {
       
    }

    /**
     * Validate the given username and password.
     * @param $username and $password to be validated
     * @return array array of {@link Error} s
     */
    public static function validate($username, $password) {
        $errors = array();
        $username = trim($username);
        if (!$username) {
            $errors[] = new Error('username', '用户名不能为空。');
        } elseif (strlen($username)<3) {
            $errors[] = new Error('username', '用户名长度不能小于3个字符。');
        } elseif (strlen($username)>30) {
            $errors[] = new Error('username', '用户名长度不能超过30个字符。');
        } elseif (!preg_match('/^[A-Za-z]+$/',substr($username, 0, 1))) {
            $errors[] = new Error('username', '用户名必须以字母开头。');
        } elseif (!preg_match('/^[A-Za-z0-9_]+$/', $username)) {
            $errors[] = new Error('username', '用户名只能是字母、数字以及下划线( _ )的组合。');
        } elseif (!trim($password)) {
            $errors[] = new Error('password', '密码不能为空。');
        } else {
            // check whether use exists or not
            $dao = new UserDao();
            $user = $dao->findByName($username);

            if ($user) {
                if (!($user->getPassword() == sha1($user->getSalt() . $password))) {
                    $errors[] = new Error('password', '用户名或密码错误。');
                }
            } else {
                $errors[] = new Error('username', '用户名不存在。');
            }
        }
        return $errors;
    }
}
?>

Error是自己写的一个类:
 

代码如下:

<?php
/**
 * Validation error.
 */
final class Error {

    private $source;
    private $message;


    /**
     * Create new error.
     * @param mixed $source source of the error
     * @param string $message error message
     */
    function __construct($source, $message) {
        $this->source = $source;
        $this->message = $message;
    }

    /**
     * Get source of the error.
     * @return mixed source of the error
     */
    public function getSource() {
        return $this->source;
    }

    /**
     * Get error message.
     * @return string error message
     */
    public function getMessage() {
        return $this->message;
    }
}
?>

2、调用验证器进行验证
 

代码如下:

<?php
$username = null;
$password = null;

$msg = "";

if (isset()($_POST['username']) && isset($_POST['password'])) {
    $username = addslashes(trim(stripslashes()($_POST ['username'])));
    $password = addslashes()(trim(stripslashes($_POST ['password'])));
    // validate
    $errors = LoginValidator::validate($username, $password);
   
    if (empty($errors)) {
        // save the latest ip or login time into database, then processing page forwarding
        $dao = new UserDao();
        $user = $dao->findByName($username);
        $last_login_ip = Utils::getIpAddress();
        $user->setLastLoginIp($last_login_ip);
        $now = new DateTime();
        $user->setLastLoginTime($now);
        $dao->save($user);
        UserLogin::setUserInfo($user);
        Flash::addFlash('登录成功!');
        Utils::redirect('welcome');
    }
   
    foreach ($errors as $e) {
        $msg .= $e->getMessage()."<br>";
    }
 ?>


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3