_php基础_脚本之家

By Vikram VaswaniMelonfireNovember 07,
2000我们是一群PHP的忠实FANS,我们因各种不同的原因使用它-WEB站点的开发,画图,数据库的联接等
-我们发现,它非常的友好,强大而且易于使用……你可能已经看到PHP是怎样被用于创建GIF和JPEG图像,从数据库中动态的获取信息等等,但这只是冰山的一角—最新版本的PHP拥有着强大的文件传输功能。在这篇教程里,我将向你展示FTP怎样通过HTTP和FTP联接来传输文件,同时也会有一些简单的程序代码,跟我来吧!首先,你应该知道PHP是通过HTTP和FTP联接来传输文件的。通过HTTP上传文件早在PHP3中就已经出现,现在,新的FTP函数已经在新的PHP版本中出现了!开始之前,你需要确信你的PHP支持FTP,你可以通过以下代码查知:—————————————————————————————————————————————————————-检查输出结果,有一“Additional
Modules”区,这里列示了你的PHP支持的模块;如果你没发现FTP模块,你最好重新安装PHP,并添加FTP支持!先让我们来看看一个典型的FTP任务是怎样完成的吧!——————————————————————————–$
ftp ftp.server.comConnected to ftp.server.com220 server.com FTP server
ready.Name : john331 Password required for john.Password:230 User john
logged in.Remote system type is UNIX.Using binary mode to transfer
files.ftp> ls200 PORT command successful.150 Opening ASCII mode data
connection for /bin/ls.drwxr-xr-x5 johnusers3072 Nov2 11:03
.drwxr-xr-x88 rootroot2048 Nov1 23:26 ..drwxr–r–2 johnusers1024 Oct5
13:26 bindrwx–x–x8 johnusers1024 Nov2 10:59 public_htmldrwxr–r–4
johnusers1024 Nov2 11:26 tmp-rw-r–r–1 johnusers2941465 Oct9 17:21
data.zip226 Transfer complete.ftp> bin200 Type set to I.ftp> get
data.ziplocal: data.zip remote: data.zip200 PORT command successful.150
Opening BINARY mode data connection for data.zip.226 Transfer
complete.ftp> bye221
Goodbye.——————————————————————————–你可以看到,进程明显被分为几段:联接、验证、传输、取消联接。使用PHP来FTP的步骤建立一个PHP的FTP联接必须遵守以下基本步骤:打开一个联接

  • 发出认证信息 –
    使用PHP函数操纵目录和传输文件。以下具体实现:——————————————————————————–//
    联接FTP服务器$conn = ftp_connect;//
    使用username和password登录ftp_login;// 获取远端系统类型ftp_systype;//
    列示文件$filelist = ftp_nlist;// 下载文件ftp_get($conn, “data.zip”,
    “data.zip”, FTP_BINARY);//
    关闭联接ftp_quit;?>——————————————————————————–让我们一步步的来:为了初结化一个FTP联接,PHP提供了ftp_connect()这个函数,它使用主机名称和端口作为参数。在上面的例子里,主机名字为“ftp.server.com”;如果端口没指定,PHP将会使用“21”作为缺省端口来建立联接。联接成功后ftp_connect()传回一个handle句柄;这个handle将被以后使用的FTP函数使用。——————————————————————————–//
    connect to FTP server$conn =
    ftp_connect;?>——————————————————————————–一旦建立联接,使用ftp_login()发送一个用户名称和用户密码。你可以看到,这个函数ftp_login函数传来的handle,以确定用户名和密码能被提交到正确的服务器。——————————————————————————–//
    log in with username and
    passwordftp_login;?>——————————————————————————–这时,你就能够做你想做的事情了,具体在下一部分讲:做完你想做的事后,千万要记住使用ftp_quit()函数关闭你的FTP联接——————————————————————————–//
    close
    connectionftp_quit;?>——————————————————————————–登录了FTP服务器,PHP提供了一些函数,它们能获取一些关于系统和文件以及目录的信息。ftp_pwd()如果你想知道你当前所在的目录时,你就要用到这个函数了。——————————————————————————–//
    get current location$here =
    ftp_pwd;?>——————————————————————————–万一你需要知道服务器端运行的是什么系统呢?ftp_systype()正好提供给你这方面的信息。——————————————————————————–//
    get system type$server_os =
    ftp_systype;?>——————————————————————————–关于被动模式的开关,PHP也提供了这样一个函数,它能打开或关闭PASV——————————————————————————–//
    turn PASV
    onftp_pasv;?>——————————————————————————–现在,你已经知道你在“哪里”和“谁”跟你在一起了吧,现在我们开始在目录中逛逛–实现这一功能的是ftp_chdir()函数,它接受一个目录名作为参数。——————————————————————————–//
    change directory to
    “public_html”ftp_chdir;?>——————————————————————————–如果你想回到你刚才所在的目录能帮你实现你的愿望,这个函数能回到上一级目录。——————————————————————————–//
    go up one level in the directory
    treeftp_cdup;?>——————————————————————————–你也能够建立或移动一个目录,这要使用ftp_mkdir函数;注意:ftp_mkdir()建立成功的话,就会返回新建立的目录名。——————————————————————————–//
    make the directory “test”ftp_mkdir;// remove the directory
    “test”ftp_rmdir;?>——————————————————————————–建立一个FTP的目录通常是传输文件—
    那么就让我们开始吧!先是上传文件,ftp_put()函数能很好的胜任这一职责,它需要你指定一个本地文件名,上传后的文件名以及传输的类型。比方说:如果你想上传“abc.txt”这个文件,上传后命名为“xyz.txt”,命令应该是这样:——————————————————————————–//
    uploadftp_put($conn, “xyz.txt”, “abc.txt”,
    FTP_ASCII);?>——————————————————————————–下载文件:PHP所提供的函数是ftp_get(),它也需要一个服务器上文件名,下载后的文件名,以及传输类型作为参数,例如:服务器端文件为his.zip,你想下载至本地机,并命名为hers.zip,命令如下:——————————————————————————–//
    downloadftp_get($conn, “hers.zip”, “his.zip”,
    FTP_BINARY);?>——————————————————————————–PHP定义了两种模式作为传输模式
    FTP_BINARY 和 FTP_ASCII
    ,这两种模式的使用请看上两例,至于其详细解释,本文也不多说了,具体请参看相关书籍。我该怎样列示文件呢?PHP提供两种方法:一种是简单列示文件名和目录,另一种就是详细的列示文件的大小,权限,创立时间等信息。第一种使用ftp_nlist.两种函数都需要一个目录名做为参数,都返回目录列做为一个数组,数组的每一个元素相当于列表的一行。——————————————————————————–//
    obtain file listing$filelist =
    ftp_nlist;?>——————————————————————————–你一定想知道文件的大小吧!别急,这里有一个非常容易的函数ftp_size(),它返回你所指定的文件的大小,使用BITES作为单位。要指出的是,如果它返回的是
    “-1”的话,意味着这是一个目录,在随后的例子中,你将会看到这一功能的应用。——————————————————————————–//
    obtain file size of file “data.zip”$filelist =
    ftp_size;?>现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件—这就是我们将要做的!在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改!程序包括以下几个文件:index.html
  • 登录文件actions.php – 程序必需的FTP代码include.php –
    程序主界面,它显示文件列表和控制按钮。让我们从
    “index.html”开始吧:——————————————————————————–

——————————————————————————–这是一个登录表单,有一个服务器名称、用户名、密码,输入框。输入的变量将会被存到$server,
$username 和 $password
变量中,表单提交后,调用actions.php,它将初始化FTP联接。注意那个“hidden”
它传给action.php一个变量$action
,值为CWD。这是action.php文件的源码:——————————————————————————–//检查表单传来的数据,不全则报错,要想程序完善的话,这里应该有更全的输入检测功能if
(!$server !$username !$password){echo “提交数据不全!”;}else{// keep
reading}?>——————————————————————————–接下来是变量
“actions”.
程序允许以下的action:”action=CWD”改变工作目录”action=Delete”删除指定文件”action=Download”下载指定文件”action=Upload”上传指定文件如果你仔细检查文件include.php,在里面包括一个HTML界面,你将会看到,它包括许多表单,每一个指向一个特定的功能,每一个表单包含一个field
,当表单提交,相应的功能将被执行。例如:按下“删除”,”action=Delete”就被传送给”actions.php”为了操作这四个功能,actions.php中代码如下:——————————————————————————–//
action: 改变目录if {// 具体代码}// action: 删除文件else if {//
具体代码}// action: 下载文件else if ($action == “Download”){//
具体代码}// action: 上传文件else if {//
具体代码}?>——————————————————————————–以上的具体代码将会实现指定的功能,并退出循环,它们都包含以下步骤:——————————————————————————–通过定制的函数联接并登录FTP服务器connect();转向适当的目录执行选择的功能刷新列表,以察看改变的结果通过include,显示文件列表和控制按钮关闭联接——————————————————————————–注意:以下功能支持多文件操作-
即 “action=Delete” 和 “action=Download” 它们使用FOR循环来实现。变量$cdir
和 $here 将在每一阶段实时更新。

发表评论

电子邮件地址不会被公开。 必填项已用*标注