PHP写的FTP类

 更新时间:2016年11月25日 16:40  点击:1314

<?php

class myftp {

var $connector;
var $getback;

function connect($ftp_server, $uname, $passwd){
// Baut grundlegende FTP Connection auf
$this->connector = @ftp_connect($ftp_server);
$this->login_result = @ftp_login($this->connector, "$uname", "$passwd");
if ((!$this->connector) ││ (!$this->login_result))
{
echo "FTP connection has failed! n";
echo "Attempted to connect to $ftp_server for user $uname n";
die;
} else {
echo "Connected to $ftp_server, for user $uname n";
}
}

function lastmodtime($value){
$getback = ftp_mdtm ($this->connector,$value);
return $getback;
}

function changedir($targetdir){
$getback = ftp_chdir($this->connector, $targetdir);
return $getback;
}
function getdir(){
$getback = ftp_pwd($this->connector);
return $getback;
}

function get_file_list($directory){
$getback = ftp_nlist($this->connector, $directory);
return $getback;
}

function get_file($file_to_get, $mode, $mode2){
$realfile = basename($file_to_get);
$filename = $realfile;

$checkdir = @$this->changedir($realfile);
if ($checkdir == TRUE){
ftp_cdup($this->connector);
echo "n[DIR] $realfile";
}else{
echo "..... ". $realfile ."n";
$getback = ftp_get($this->connector, $filename, $realfile, $mode);
if ($mode2){
$delstatus = ftp_delete($this->connector, $file_to_get);
if ($delstatus == TRUE){
echo "File $realfile on $host deleted n";
}
}
}
return $getback;
}

<body>
<script language="Javascript">
<!--
document.write('<div id="Today"></div>');
var a=0;
var Y=[color=#FF0000]<?echo date('Y')?>[/color],M=[color=#FF0000]<?echo date('n')?>[/color],D=[color=#FF0000]<?echo date('j')?>[/color];
function clock() {
sec=[color=#FF0000]<?echo strtotime('8 hours')?>[/color] a; //(GMT 8:00)时区:中国标准时间
S=sec`; //秒
I=Math.floor(sec/60)`; //分
H=Math.floor(sec/3600)$; //时
W='四五六日一二三'.charAt(Math.floor(sec/86400)%7); //星期几
if(S<10) S='0' S;
if(I<10) I='0' I;
if(H<10) H='0' H;
if (H=='00' & I=='00' & S=='00') D=D 1; //日进位
if (M==2) { //判定是否为二月份******
if (!Y%4>0) { //是闰年(二月有28天)
if (D==30){M =1;D=1;} //月份进位
}
else { //非闰年(二月有29天)
if (D==29){M =1;D=1;} //月份进位
}
}
else { //不是二月份的月份******
if (M==4 || M==6 || M==9 || M==11) { //小月(30天)
if (D==31) {M =1;D=1;} //月份进位
}
else { //大月(31天)
if (D==32){M =1;D=1;} //月份进位
}
}
if (M==13) {Y =1;M=1;} //年份进位
timeStr=Y '年' M '月' D '日' ' 星期' W ' ' H ':' I ':' S;
Today.innerHTML = timeStr;
a ;
}
clock(); //这行可以不要,只为初始化...
setInterval(clock,1000);
//-->
//判定闰年的规则是,能被4整除,但能被100整除的不是闰年,能被400整除为闰年.
//像1600、2000、2400年都是闰年,而1700、1800、1900、2100年都是平年(非闰年)
//PHP目前只能处理1970-2038年的时间段,所以在这不用理会100及400的这整除事件
</script>
</body>

xmlhttp,无刷新声,无漏斗标记,效果最好,不过就是对浏览器要求高,好在我的应用只是一个附属的功能,因此不需要用户必须开启这个控件……最后决定采用这个方案

我写了一个测试程序,代码如下,供大家参考:
==test2.php=================
<?
session_start();
echo "现在时间是:".date("Y-m-d H:i:s ",time());
?>

==eg4.php==================
<script language="javascript">
function re()
{
var http = new ActiveXObject("Microsoft.XMLHTTP");
http.open("GET","test2.php",false);
http.send();
var str = bytes2BSTR(http.responsebody);
t.innerHTML=str;
setTimeout( "re()" , 2000 );
}
</script>

<script language=vbscript>
Function bytes2BSTR(vIn)
dim i
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i 1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 CInt(NextCharCode))
i = i 1
End If
Next
bytes2BSTR = strReturn
End Function
</script>


<body onload="re();">
<span id=t>数据载入中</span>
</body>

这样,当你运行eg4.php时,页面会出现当前时间,每2秒刷新一次,看不到进度条,也没有小漏斗标记了

LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。本文的原文当然也来自:

Published on The O'Reilly Network (http://www.oreillynet.com/)
http://www.oreillynet.com/pub/a/onlamp/2002/04/04/webdb.html

看了以后,颇有启发,以前开发中碰到的一些问题,迎刃而解。所以翻译出来和大家共享。

1. PHP 中数组的使用
在操作数据库时,使用关联数组(associatively-indexed arrays)十分有帮助,下面我们看一个基本的数字格式的数组遍历:

$temp[0] = "richmond";
$temp[1] = "tigers";
$temp[2] = "premiers";

for($x=0;$x
{
echo $temp[$x];
echo " ";
}
?>

然而另外一种更加节省代码的方式是:

$temp = array("richmond", "tigers", "premiers");
foreach ($temp as $element)
echo "$element ";
?>

foreach 还能输出文字下标:

$temp = array("club" => "richmond",
"nickname" =>"tigers",
"aim" => "premiers");

foreach ($temp as $key => $value)
echo "$key : $value ";
?>
PHP 手册中描述了大约 50 个用于处理数组的函数。

2. 在 PHP 字符串中加入变量

这个很简单的:
$temp = "hello"
echo "$temp world";
?>

但是需要说明的是,尽管下面的例子没有错误:
$temp = array("one" => 1, "two" => 2);
// 输出:: The first element is 1
echo "The first element is $temp[one].";
?>

但是假如后面那个 echo 语句没有双引号引起来的话,就要报错,因此建议使用花括号:

$temp = array("one" => 1, "two" => 2);
echo "The first element is {$temp["one"]}.";
?>


3. 采用关联数组存取查询结果
看下面的例子:

$connection = mysql_connect("localhost", "albert", "shhh");
mysql_select_db("winestore", $connection);

$result = mysql_query("SELECT cust_id, surname,
firstname FROM customer", $connection);

---------- php debug ----------
Server=localhost;DataBase=mysql;UserID=root;PassWord=123456
resource(5) of type (mysql result)

Output completed (1 sec consumed) - Normal Termination


<?php
class DBCLS
{


//debug 调试开关
var $debug = true;

//debuginfo 错误信息,调试信息
var $debuginfo = "debug informations:rn";

//db_server MySQL主机地址
var $db_server;

//db_name 数据库名
var $db_name;

//db_user 数据库用户名
var $db_user;

//db_passwd 密码
var $db_passwd;

//db_links 数据库连接
var $db_link;

//db_query_sql SQL语句
var $db_query_sql = "show tables";

//db_recordset 结果集,记录集
var $db_recordset;

//ready 就绪开关
var $conntstr_ready = false;
var $link_ready = false;
var $db_ready = false;

//set or return Connection String 返回,或者设定连接字符串
function connection_string($connstr="")
{
if("" == $connstr)
{
//假如没有参数传入,返回已有的连接字符
return "Server=".$this->db_server.";DataBase=".$this->db_name.";UserID=".$this->db_user.";PassWord=".$this->db_passwd;
}
else
{
//否则,解析连接字符,初始化变量
preg_match_all("|([a-zA-Z0-9]*)=([a-zA-Z0-9]*);*|", $connstr, $tmparr, PREG_PATTERN_ORDER);
$this->db_server = (strtolower($tmparr[1][0]) == "server")?$tmparr[2][0]:"";
$this->db_name = (strtolower($tmparr[1][1]) == "database")?$tmparr[2][1]:"";
$this->db_user = (strtolower($tmparr[1][2]) == "userid")?$tmparr[2][2]:"";
$this->db_passwd = (strtolower($tmparr[1][3]) == "password")?$tmparr[2][3]:"";
//var_dump($tmparr);

if("" == $this->db_server or "" == $this->db_name or "" == $this->db_user or "" == $this->db_passwd)
$this->conntstr_ready = false; //假如有其中一个以上变量被赋以空字符串"",预备未就绪
else
$this->conntstr_ready = true;
return $this->conntstr_ready;
}

}


//连接数据库,返回连接对象
function connect()
{
if(!$this->conntstr_ready)
{

[!--infotagslink--]

相关文章

  • php svn操作类

    以前我们开发大型项目时都会用到svn来同步,因为开发产品的人过多,所以我们会利用软件来管理,今天发有一居然可以利用php来管理svn哦,好了看看吧。 代码如下 ...2016-11-25
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • JS+CSS实现分类动态选择及移动功能效果代码

    本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
  • Php文件上传类class.upload.php用法示例

    本文章来人大家介绍一个php文件上传类的使用方法,期望此实例对各位php入门者会有不小帮助哦。 简介 Class.upload.php是用于管理上传文件的php文件上传类, 它可以帮...2016-11-25
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • C#类中static变量用法分析

    这篇文章主要介绍了C#类中static变量用法,实例分析了static变量使用技巧与相关注意事项,需要的朋友可以参考下...2020-06-25
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • mybatis-plus实体类主键策略有3种(小结)

    这篇文章主要介绍了mybatis-plus实体类主键策略有3种(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-27
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • PHP 一个完整的分页类(附源码)

    在php中要实现分页比起asp中要简单很多了,我们核心就是直接获取当前页面然后判断每页多少再到数据库中利用limit就可以实现分页查询了,下面我来详细介绍分页类实现程序...2016-11-25
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • c#各种Timer类的区别与用法介绍

    System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。在必须更新用户界面的情况下,建议不要使用该计时器,因为它的回调不在用户界面线程上发生...2020-06-25
  • C#学习笔记整理_浅谈Math类的方法

    下面小编就为大家带来一篇C#学习笔记整理_浅谈Math类的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 详解ES6实现类的私有变量的几种写法

    这篇文章主要介绍了详解ES6实现类的私有变量的几种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-10
  • ES5和ES6中类的区别总结

    这篇文章主要给大家介绍了ES5和ES6中类的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-21