标题: [PHP]FTP快速上传源代码解析
时间: 2014-11-07
<?php
$ftp_server='localhost'; //FTP服务器地址
$ftp_user_name='lalalalala';//FTP用户名
$ftp_user_pass='abc';//FTP密码
// 定义变量
$local_file = '1.sql';
$server_file = '/public_html/1.bak';
// 连接FTP服务器
$conn_id = ftp_connect($ftp_server);
//验证登录服务器
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// 下载文件
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "下载 $local_file 文件成功";
} else {
echo "下载失败";
}
$local_file = 'xr-register.zip';
$server_file = '/public_html/xr-register.up.zip';
if (ftp_put($conn_id, $server_file, $local_file, FTP_BINARY)) {
echo "上传 $server_file 文件成功";
} else {
echo "上传失败";
}
// 关闭ftp连接
ftp_close($conn_id);
?>
<?php
// 设置报错内容等级
error_reporting(E_ERROR | E_WARNING | E_PARSE);
// 网页HEAD头function title($title){
echo <<<HTML
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<title>{$title}-PHPBY</title>
<link rel="stylesheet" type="text/css" href="http://phpby.tk/style.css" />
</head>
<body>
HTML;
}
// 网页尾部
function footer($str=null){
if($str){
echo '<div class="error">'.$str.'</div>';
}
echo <<<HTML
<div class="footer">©2014 PHPBY All Rights Reserved.</div>
</body>
</html>
HTML;
}
function _decode($data) {
if($data!=null) {
$data=rawurldecode($data);
return $data;
} else {
return false;
}
}
//判断空间是否支持FTP函数
function_exists('ftp_connect') or exit(footer('空间不支持FTP相关函数!'));
$host = $_POST['host'];
$user = $_POST['user'];
$pass = $_POST['pass'];
$port = empty($_POST['port']) ? 21 : $_POST['port'];
if(!empty($host)){
title('快捷安装脚本上传结果');
echo '<div class="header">快捷安装脚本上传结果</div>';
$path = $_POST['path']; // 远程路径
//这里"fileadmin"就是匹配POST过来的zipfile,fileadmin.zip为与此文件同级目录下的压缩包,初次使用自动解压
$zipfile_arr = array(
'fileadmin' => 'fileadmin.zip',
'installzip' => 'installzip.zip'
);
$zipfile = $zipfile_arr[$_POST['zipfile']] ? $zipfile_arr[$_POST['zipfile']] : exit(footer('没有找到此安装程序!'));
if(!$conn = @ftp_connect($host,$port)){ //判断FTP主机是否连接成功
echo '<div class="error">ERROR: 无法连接FTP主机:'.$host.'</div>';
}elseif(!@ftp_login($conn,$user,$pass)){ //判断FTP用户是否登陆成功
echo '<div class="error">ERROR: 无法登陆FTP主机:'.$user.'</div>';
}else{
//判断是否存在解压记录
if(!is_file('./cache/'.$_POST['zipfile'].'/temp.cache')){
//压缩文件
$_path='./'.$zipfile;
//解压目录
$_dirpath='./cache/'.$_POST['zipfile'];
//解压原始文件
require 'pclzip.lib.php';
$pk=new pclzip(_decode($_path));
if(($count=$pk->extract(PCLZIP_OPT_PATH,$_dirpath))==false) {
exit(footer('Hello,压缩包 '.basename(_decode($_path)).' 解压失败!'));
}
echo 'Hello,压缩包 '.basename(_decode($_path)).' 解压成功!';
echo '<div class="big_board"><div class="board_title"></div></div>->>Hello,共解出档案 '.count($count).' 个哦!';
//print_r($count);
@file_put_contents('./cache/'.$_POST['zipfile'].'/temp.cache',serialize($count));
}
if(@ftp_mkdir($conn,$path)) echo '<div class="success">路径'.$path.'创建成功!</div>';//如果用户输入的目录不存在则尝试创建
$handle = fopen('./cache/'.$_POST['zipfile'].'/temp.cache',"r");
$count = unserialize(fread($handle, filesize ('./cache/'.$_POST['zipfile'].'/temp.cache')));
foreach($count as $filename){
$local = './cache/'.$_POST['zipfile'].'/'.$filename['stored_filename']; // 要上传的本地文件
$sfile = $path.'/'.$filename['stored_filename'];
// 判断是否为文件(要上传的本地文件是否存在)
if(is_file($local)){
// 上传文件
if(@ftp_put($conn,$sfile,$local,FTP_BINARY)){
echo '<div class="success">文件'.$filename['stored_filename'].'上传成功!</div>';
}else{
echo '<div class="error">文件'.$filename['stored_filename'].'上传失败!</div>';
}
}else{
// 创建目录
if(@ftp_mkdir($conn,$sfile)){
echo '<div class="success">目录'.$filename['stored_filename'].'创建成功!</div>';
}else{
echo '<div class="error">目录'.$filename['stored_filename'].'创建失败!</div>';
}
}
}
}
}else{
title('一键安装程序');
echo <<<HTML
<div class="lol">
<div class="lo">一键安装程序</div>
<form action="?" method="post" id="login" style="text-align:center;">
FTP服务器
<input type="text" name="host" value=""/><hr/>
FTP端口
<input type="text" name="port" value="21"/><hr/>
FTP用户
<input type="text" name="user" value=""/><hr/>
FTP密码
<input type="password" name="pass"/><hr/>
远程路径
<div class="nice">
输入安装目录(可自动创建新目录)
</div>
<input type="text" name="path" value="/public_html/"/><hr/>
安装程序
<select name="zipfile">
<option value="fileadmin">爱特文管(fileadmin)</option>
<option value="installzip">一键安装(installzip.php)</option>
</select>
<input type="submit" value="一键上传"/>
</form>
</div>
<div class="lol">
<div class="lo">使用帮助</div>
<font style="color:#90f;font-size:12px">
远程路径中可以自动创建空目录,但是请注意,如果 /public_html/new/ 路径不存在,无法直接创建 /public_html/new/new/
基于 @读书顶个鸟用 的单文件上传工具修改,版权归原作者。by 蒋小凌
</font>
</div>
HTML;
}
footer();
?>
『回复列表(33|隐藏机器人聊天)』