php4如何获取远程文件大小类

 更新时间:2016年11月25日 16:28  点击:1440
php5有get_headers非常好用,因为他可以直接读取远程文件的信息,而不用把整个文件读取到服务器。但是现在很多web服务器都不支持php5,下面我们就来看一个关于php4获取远程服务器文件大小的实例类吧。

 /*
 
 */

 代码如下 复制代码

if(!function_exists('get_headers'))
{
    function get_headers($url,$format=0)
    {
        $url=parse_url($url);
        $end = " ";
        $fp = fsockopen($url['host'], (empty($url['port'])?80:$url['port']), $errno, $errstr, 30);
        if ($fp)
        {
            $out  = "get / http/1.1 ";
            $out .= "host: ".$url['host']." ";
            $out .= "connection: close ";
            $var  = '';
            fwrite($fp, $out);
            while (!feof($fp))
            {
                $var.=fgets($fp, 1280);
                if(strpos($var,$end))
                    break;
            }
            fclose($fp);

            $var=preg_replace("/ .*$/",'',$var);
            $var=explode(" ",$var);
            if($format)
            {
                foreach($var as $i)
                {
                    if(preg_match('/^([a-za-z -]+): +(.*)$/',$i,$parts))
                        $v[$parts[1]]=$parts[2];
                }
                return $v;
            }
            else
                return $var;
        }
    }
}

在php中我们有个全局变量$_SERVER[\\\'HTTP_USER_AGENT\\\'];可以获取用户所有信息,我们要经过处理才可以判断用户浏览器是那种型的,下面的函数就可以准确的用户浏览器版本号代码。


function getbrowse()
        {
                $agent = $_server['http_user_agent'];
                $browser = '';
                $browserver = '';
                $browser = array('lynx', 'mosaic', 'aol', 'opera', 'java', 'macweb', 'webexplorer', 'omniweb');
                for($i = 0; $i <= 7; $i ++){
                        if(strpos($agent, $browsers[$i])){
                                $browser = $browsers[$i];
                                $browserver = '';
                        }
                }
                if(ereg('mozilla', $agent) && !ereg('msie', $agent)){
                        $temp = explode('(', $agent);
                        $part = $temp[0];
                        $temp = explode('/', $part);
                        $browserver = $temp[1];
                        $temp = explode(' ', $browserver);
                        $browserver = $temp[0];
                        $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
                        $browserver = $browserver;
                        $browser = 'netscape navigator';
                }
                if(ereg('mozilla', $agent) && ereg('opera', $agent)) {
                        $temp = explode('(', $agent);
                        $part = $temp[1];
                        $temp = explode(')', $part);
                        $browserver = $temp[1];
                        $temp = explode(' ', $browserver);
                        $browserver = $temp[2];
                        $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
                        $browserver = $browserver;
                        $browser = 'opera';
                }
                if(ereg('mozilla', $agent) && ereg('msie', $agent)){
                        $temp = explode('(', $agent);
                        $part = $temp[1];
                        $temp = explode(';', $part);
                        $part = $temp[1];
                        $temp = explode(' ', $part);
                        $browserver = $temp[2];
                        $browserver = preg_replace('/([d.]+)/','\1',$browserver);
                        $browserver = $browserver;
                        $browser = 'internet explorer';
                }
                if($browser != ''){
                        $browseinfo = $browser.' '.$browserver;
                } else {
                        $browseinfo = false;
                }
                return $browseinfo;
        }
 //应用方法
 
 //在ie中
 echo getbrowse(); //internet explorer 6.0
 //在firefox中
 echo getbrowse() ;//netscape navigator 5.0

树型结构是很多程序会员会用到的,上面这款关于树型结构操作类,很好的解决了这个问题哦。

/***************************************************************
* 树型结构操作类(如果可以写成存储过程最理想)
*
*  ***************************************************************/

class treenode {
        var $f_id = 'id';
        var $f_pid = 'pid';
        var $f_lft = 'lft';
        var $f_rgt = 'rgt';
        var $f_s = 'sequence';
        var $f_level = 'lev';
        var $f_child_num = 'child_num';
        var $table;
        var $db;
        /**
         * 构造函数
         * @param string $table 表名
         * @param object $dbhanle adodb数据库教程操作句柄
         */
        function treenode($table, $dbhandle) {
                $this->db = $dbhandle;
                $this->table = $table;
                //$this->db->debug = true;
        }
        /**
         * 增加子节点
         * @param array $data 节点数据
         * @return bool
         */
        function addchild($data){
                $pid = $data[$this->f_pid];
                $sql = "select max({$this->f_s}) from {$this->table} where {$this->f_pid}=$pid";
                $data[$this->f_s] = $this->db->getone($sql) + 1;//得到待插入节点的序号
                $sql = "select * from {$this->table} where {$this->f_id} = -1";
                $rs = $this->db->execute($sql);
                $sql = $this->db->getinsertsql($rs, $data);
                $this->db->execute($sql); //插入节点数据
                if(!$this->db->affected_rows()){
                        return false;
                }
               
                $this->buildtree(1,1);        //重建节点左右值
                $this->updatelevel(1);        //生成节点级数值
                return true;
        }
        /**
         * 修改节点的数据
         * @param int $id 节点id号
         * @param array $data 节点数据
         * @return bool
         */

导入数据到ucenter与论坛,或其它 cms用户同小只要操作ucenter的两张表就行了,uc_members,uc_memberfields哦,涉及到更新的字段也不多,所以总体来讲把它系统的数据导入到ucenter进行会员同止步是很简单的。

/*
我们要用的会员表结构

 代码如下 复制代码
create table if not exists `net_111cnnet` (
  `id` int(11) not null auto_increment,
  `username` varchar(32) default null,
  `add_time` int(11) default null,
  `email` varchar(50) default null,
  `password` varchar(50) default null,
  `last_login` int(4) default null 
  primary key  (`id`)
) engine=myisam  default charset=utf8 auto_increment=1 ;


会员表
*/

 代码如下 复制代码
$host ='localhost';
$db ='abc';
$user='root';
$password ='root';

//数据库教程连接配置,由于我的ucenter表与现在的会员表在同一个数据库所以就一次连接就行了。

 代码如下 复制代码

try { 
 $conn = mysql教程_connect($host,$user,$password);
 mysql_select_db($db,$conn);
} catch (dbexception $e) { 
 exit('database connect fail!');// 数据库出错处理处
}

$sql ="select * from net_111cnnet "; //查出要导入到ucenter所有会员数据
$query = mysql_query( $sql,$conn);
while( $rs = mysql_fetch_array( $query ))
{
 $uc_sql = "select * from uc_members where username='".$rs['username']."'";
 $data = mysql_query( $uc_sql ) ;
 if( $data )
 {
  ;
 }
 else
 {
  $salt = substr(uniqid(rand()), -6);
  $password = md5($rs['password'].$salt);//按照ucenter规则生成用户登陆密码
  
  mysql_query("insert into uc_members set uid= '".$rs['id']."', username='".$rs['username']."', password='$password', email='".$rs['email']."', lastlogintime ='".$rs['last_login']."', regdate='".$rs['add_time']."', salt='$salt'"); //把数据插入到uc_members表
  mysql_query("insert into uc_memberfields set uid='".$rs['id']."'");//更新uc_memberfields表。
 }
}
exit('所有用户己导入到ucenter');

/*
总结:
 
 本文章原创于www.111cn.net转载的朋友请尊重他人的劳动成果,注明来源。
*/

require_once '../../../tabs.php';
?>

 代码如下 复制代码

<!doctype html public "-//w3c//dtd xhtml 1.0 strict//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">
<html>
  <head>
    <title>jqgrid php demo</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" type="text/css教程" media="screen" href="../../../themes/redmond/jquery-ui-1.7.1.custom.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="../../../themes/ui.jqgrid.css" />
    <link rel="stylesheet" type="text/css" media="screen" href="../../../themes/ui.multiselect.css" />
    <style type="text">
        html, body {
        margin: 0;            /* remove body margin/padding */
        padding: 0;
        overflow: hidden;    /* remove scroll bars on browser window */
        font-size: 75%;
        }
    </style>
    <script src="../../../网页特效/jquery.网页特效" type="text/网页特效"></script>
    <script src="../../../js/i18n/grid.locale-en.js" type="text/网页特效"></script>
    <script type="text/javascript">
    $.jgrid.no_legacy_api = true;
    $.jgrid.usejson = true;
    </script>
    <script src="../../../js/jquery.jqgrid.min.js" type="text/javascript"></script>
    <script src="../../../js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
  </head>
  <body>
      <div>
          <?php include ("grid.php");?>
      </div>
      <br/>
      <?php tabs(array("grid.php"));?>
   </body>
</html>

php代码

<?php
require_once '../../../jq-config.php';
// include the jqgrid class
require_once abspath."php/jqgrid.php";
// include the driver class
require_once abspath."php/jqgridpdo.php";
// connection to the server
$conn = new pdo(db_dsn,db_user,db_password);
// tell the db that we use utf-8
$conn->query("set names utf8");

// create the jqgrid instance
$grid = new jqgridrender($conn);
// write the sql query
$grid->selectcommand = 'select orderid, orderdate, customerid, freight, shipname from longorders';
// set the ouput format to json
$grid->datatype = 'json';
// let the grid create the model
$grid->setcolmodel();
// set the url from where we obtain the data
$grid->seturl('grid.php');
$grid->optimizesearch = true;
// set some grid options
$grid->setgridoptions(array("rownum"=>100,"sortname"=>"orderid","height"=>150));
// change some property of the field(s)
$grid->setcolproperty("orderdate", array(
    "formatter"=>"date",
    "formatoptions"=>array("srcformat"=>"y-m-d h:i:s","newformat"=>"m/d/y"),
    "search"=>false
    )
);
// enable toolbar searching
$grid->toolbarfilter = true;
$grid->setfilteroptions(array("stringresult"=>true));
// enjoy
$grid->rendergrid('#grid','#pager',true, null, null, true,true);
$conn = null;
?>

 

[!--infotagslink--]

相关文章

  • pytorch nn.Conv2d()中的padding以及输出大小方式

    今天小编就为大家分享一篇pytorch nn.Conv2d()中的padding以及输出大小方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
  • C#比较时间大小的方法总结

    在本篇内容里小编给大家分享的是关于C#比较时间大小的方法总结,对此有需要的朋友们可以学习下。...2020-06-25
  • 安卓利用按钮Button更改的字体大小、字体颜色、背景颜色代码

    本文章来介绍在android开发中,我们通过button按钮来动态改变字体大小、字体颜色、背景颜色代码,有需要了解的朋友可参考参考。 实现的逻辑:通过遍历View的方式,判断Vi...2016-09-20
  • java 用itext设置pdf纸张大小操作

    这篇文章主要介绍了java 用itext设置pdf纸张大小操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31
  • python中subplot大小的设置步骤

    matploglib能够绘制出精美的图表,有时候我们希望把一组图放在一起进行比较,就需要用到matplotlib中提供的subplot了,这篇文章主要给大家介绍了关于python中subplot大小的设置方法,需要的朋友可以参考下...2021-06-28
  • 怎么限制Apache日志文件大小(error.log、access.log)

    如何删除error.log、access.log文件以及限制Apache日志文件大小的方法介绍,Apache服务器下access.log以及error.log日志文件一直没有没有动过,今天wordpress 的MYSQL数据库连...2016-01-28
  • C++获取文件大小的4种常见技巧分享

    这篇文章主要介绍了C++获取文件大小的4种常见技巧分享,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-23
  • C# WinForm中禁止改变窗口大小的方法

    这篇文章主要介绍了C# WinForm中禁止改变窗口大小的方法,需要把FormBorderStyle和MaximizeBox的值固定即可,需要的朋友可以参考下...2020-06-25
  • Oracle如何设置表空间数据文件大小

    这篇文章主要介绍了Oracle如何设置表空间数据文件大小,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-22
  • IIS 7 中设置文件上传大小限制设置方法

    有时候我们需要限制上传文件的大小,那么可以参考下面的方法...2016-01-27
  • 用PHP写了个 标签 按点击率的 字体大小和颜色的 显示效果

    按标签的点击率来设置标签字体的大小和 颜色本程序没有考虑程序性能和函数封装。。。只想表达这个算法具体代码如下: <?php function showTag($cur=47,$ta...2016-11-25
  • C语言用fstat函数获取文件的大小方法

    今天小编就为大家分享一篇关于C语言用fstat函数获取文件的大小方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25
  • php ckeditor上传图片文件大小限制修改

    ckeditor编辑器在上传图片或文件时是没有大小限制的,下面我们来给大家介绍两种ckeditor上传图片文件大小限制问题解决办法。 一种可以通过修改PHP.INI配置文件上传...2016-11-25
  • golang 比较浮点数的大小方式

    这篇文章主要介绍了golang 比较浮点数的大小方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-01
  • pytorch 如何查看数据类型和大小

    这篇文章主要介绍了pytorch 实现查看数据类型和大小的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-05-20
  • asp.net FileUpload控件实现文件格式判断与文件大小限制

    这篇文章主要介绍了有关asp.net fileupload控件判断文件格式,以及进行文件大小限制的方法,可以在web.config中配置,也可以在.cs文件中实现,需要的朋友参考下...2021-09-22
  • php实现远程文件下载代码

    这里为各位提供一款远程文件下载代码,我们可以把远程的文件用php下载到本地指定的目录,希望文章对你有帮助。 代码如下 复制代码 class downl...2016-11-25
  • javacript获取当前屏幕大小

    本文主要介绍使用javacript获取当前屏幕大小的方法,需要的朋友可以参考下。...2016-06-12
  • C++空类及没有成员变量的类的大小实例分析

    这篇文章主要介绍了C++空类及没有成员变量的类的大小,对于初学者更好的了解C++的指针及类的存储结构很有帮助,需要的朋友可以参考下...2020-04-25
  • Docker tomcat的设置内存大小配置方式

    这篇文章主要介绍了Docker tomcat的设置内存大小配置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29