喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
     
标题: 懒人进来,share一个ftp.class.php  
 
Ymir
新手上路
Rank: 1



UID 72483
精华 0
积分 24
帖子 45
金钱 24 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-4-28
状态 离线
懒人进来,share一个ftp.class.php



<?
  
function ftp_connect ($server$port 21)
  {
    global 
$ftp_timeout;
    
ftp_debug ((((('Trying to '.$server).':').$port).' ...
'
));
    
$sock fsockopen ($server$port$errno$errstr$ftp_timeout);
    if ((
$sock AND ftp_ok ($sock)))
    {
      
ftp_debug ((((('Connected to remote host "'.$server).':').$port).'"
'
));
      return 
$sock;
    }
    else
    {
      
ftp_debug ((((('Cannot connect to remote host "'.$server).':').$port).'"
'
));
      
ftp_debug ((((('Error : '.$errstr).' (').$errno).')
'
));
      return 
FALSE;
    }

  }

  function 
ftp_login ($sock$user$pass)
  {

    
ftp_putcmd ($sock'USER'$user);
    if (!
ftp_ok ($sock))
    {
      return 
FALSE;
    }

    
ftp_putcmd ($sock'PASS'$pass);
    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Authentication succeeded
'
);
      return 
TRUE;
    }
    else
    {
      
ftp_debug ('Error : Authentication failed
'
);
      return 
FALSE;
    }

  }

  function 
ftp_pwd ($sock)
  {

    
ftp_putcmd ($sock'PWD');
    
$response ftp_getresp ($sock);
    if (!
$response)
    {
      return 
FALSE;
    }

    if (
ereg ('^[123]'$response))
    {
      return 
ereg_replace ('^[0-9]{3} "(.+)" .+''\1'$response);
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_size ($sock$pathname)
  {
    
ftp_putcmd ($sock'SIZE'$pathname);
    
$response ftp_getresp ($sock);
    if (!
$response)
    {
      return 
FALSE;
    }

    if (
ereg ('^[123]'$response))
    {
      return 
ereg_replace ('^[0-9]{3} ([0-9]+)''\1'$response);
    }
    else
    {
      return -
1;
    }

  }

  function 
ftp_mdtm ($sock$pathname)
  {
    
ftp_putcmd ($sock'MDTM'$pathname);
    
$response ftp_getresp ($sock);
    if (!
$response)
    {
      return 
FALSE;
    }

    if (
ereg ('^[123]'$response))
    {
      
$mdtm ereg_replace ('^[0-9]{3} ([0-9]+)''\1'$response);
      list (
$year$mon$day$hour$min$sec) = sscanf ($mdtm'%4d%2d%2d%2d%2d%2d');
      
$timestamp mktime ($hour$min$sec$mon$day$year);
      return 
$timestamp;
    }
    else
    {
      return -
1;
    }

  }

  function 
ftp_systype ($sock)
  {
    
ftp_putcmd ($sock'SYST');
    
$data ftp_getresp ($sock);
    if (
$data)
    {
      
$DATA explode (' '$data);
      return 
$DATA[1];
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_cdup ($sock)
  {
    
ftp_putcmd ($sock'CDUP');
    return 
ftp_ok ($sock);
  }

  function 
ftp_chdir ($sock$dir)
  {
    
ftp_putcmd ($sock'CWD'$dir);
    return 
ftp_ok ($sock);
  }

  function 
ftp_delete ($sock$pathname)
  {
    
ftp_putcmd ($sock'DELE'$pathname);
    return 
ftp_ok ($sock);
  }

  function 
ftp_rmdir ($sock$pathname)
  {
    
ftp_putcmd ($sock'RMD'$pathname);
    return 
ftp_ok ($sock);
  }

  function 
ftp_mkdir ($sock$pathname)
  {
    
ftp_putcmd ($sock'MKD'$pathname);
    return 
ftp_ok ($sock);
  }

  function 
ftp_rename ($sock$from$to)
  {
    if (!
ftp_file_exists ($sock$from))
    {
      
ftp_debug ((('Error : No such file or directory "'.$from).'"
'
));
      return 
FALSE;
    }

    
ftp_putcmd ($sock'RNFR'$from);
    if (!
ftp_ok ($sock))
    {
      return 
FALSE;
    }

    
ftp_putcmd ($sock'RNTO'$to);
    return 
ftp_ok ($sock);
  }

  function 
ftp_nlist ($sock$arg ''$pathname '')
  {
    
ftp_putcmd ($sock'PASV');
    
$string ftp_getresp ($sock);
    if ((
$arg == ''))
    {
      
$nlst 'NLST';
    }
    else
    {
      
$nlst = ('NLST '.$arg);
    }

    
ftp_putcmd ($sock$nlst$pathname);
    
$sock_data ftp_open_data_connection ($string);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      return 
FALSE;
    }

    while (!
feof ($sock_data))
    {
      
$list[] = ereg_replace ('[]'''fgets ($sock_data512));
    }

    
ftp_close_data_connection ($sock_data);
    
ftp_debug (implode ('
'
$list));
    if (
ftp_ok ($sock))
    {
      return 
$list;
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_rawlist ($sock$pathname '')
  {
    
ftp_putcmd ($sock'PASV');
    
$response ftp_getresp ($sock);
    
ftp_putcmd ($sock'LIST'$pathname);
    
$sock_data ftp_open_data_connection ($response);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      return 
FALSE;
    }

    while (!
feof ($sock_data))
    {
      
$list[] = ereg_replace ('[]'''fgets ($sock_data512));
    }

    
ftp_debug (implode ('
'
$list));
    
ftp_close_data_connection ($sock_data);
    if (
ftp_ok ($sock))
    {
      return 
$list;
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_get ($sock$localfile$remotefile$mode 1)
  {
    global 
$ftp_umask;
    if (
$mode)
    {
      
$type 'I';
    }
    else
    {
      
$type 'A';
    }

    if (!
ftp_file_exists ($sock$remotefile))
    {
      
ftp_debug ((('Error : No such file or directory "'.$remotefile).'"
'
));
      
ftp_debug ('Error : GET failed
'
);
      return 
FALSE;
    }

    if (
file_exists ($localfile))
    {
      
ftp_debug ('Warning : local file will be overwritten
'
);
    }
    else
    {
      
umask ($ftp_umask);
    }

    
$fp fopen ($localfile'w');
    if (!
$fp)
    {
      
ftp_debug ((('Error : Cannot create "'.$localfile).'"'));
      
ftp_debug ('Error : GET failed
'
);
      return 
FALSE;
    }

    
ftp_putcmd ($sock'PASV');
    
$string ftp_getresp ($sock);
    
ftp_putcmd ($sock'TYPE'$type);
    
ftp_getresp ($sock);
    
ftp_putcmd ($sock'RETR'$remotefile);
    
$sock_data ftp_open_data_connection ($string);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      
ftp_debug ('Error : GET failed
'
);
      return 
FALSE;
    }

    
ftp_debug ((((('Retrieving remote file "'.$remotefile).'" to local file "').$localfile).'"
'
));
    while (!
feof ($sock_data))
    {
      
fputs ($fpfread ($sock_data4096));
    }

    
fclose ($fp);
    
ftp_close_data_connection ($sock_data);
    return 
ftp_ok ($sock);
  }

  function 
ftp_fget ($sock$fp$remotefile$mode 1)
  {
    global 
$ftp_umask;
    if (
$mode)
    {
      
$type 'I';
    }
    else
    {
      
$type 'A';
    }

    if (!
ftp_file_exists ($sock$remotefile))
    {
      
ftp_debug ((('Error : No such file or directory "'.$remotefile).'"
'
));
      
ftp_debug ('Error : GET failed
'
);
      return 
FALSE;
    }

    
ftp_putcmd ($sock'PASV');
    
$string ftp_getresp ($sock);
    
ftp_putcmd ($sock'TYPE'$type);
    
ftp_getresp ($sock);
    
ftp_putcmd ($sock'RETR'$remotefile);
    
$sock_data ftp_open_data_connection ($string);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      
ftp_debug ('Error : GET failed
'
);
      return 
FALSE;
    }

    
ftp_debug ((((('Retrieving remote file "'.$remotefile).'" to local file "').$localfile).'"
'
));
    while (!
feof ($sock_data))
    {
      
fputs ($fpfread ($sock_data4096));
    }

    
ftp_close_data_connection ($sock_data);
    return 
ftp_ok ($sock);
  }

  function 
ftp_put ($sock$remotefile$localfile$mode 1)
  {
    if (
$mode)
    {
      
$type 'I';
    }
    else
    {
      
$type 'A';
    }

    if (!
file_exists ($localfile))
    {
      
ftp_debug ((('Error : No such file or directory "'.$localfile).'"
'
));
      
ftp_debug ('Error : PUT failed
'
);
      return 
FALSE;
    }

    
$fp fopen ($localfile'r');
    if (!
$fp)
    {
      
ftp_debug ((('Cannot read file "'.$localfile).'"
'
));
      
ftp_debug ('Error : PUT failed
'
);
      return 
FALSE;
    }

    
ftp_putcmd ($sock'PASV');
    
$string ftp_getresp ($sock);
    
ftp_putcmd ($sock'TYPE'$type);
    
ftp_getresp ($sock);
    if (
ftp_file_exists ($sock$remotefile))
    {
      
ftp_debug ('Warning : Remote file will be overwritten
'
);
    }

    
ftp_putcmd ($sock'STOR'$remotefile);
    
$sock_data ftp_open_data_connection ($string);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      
ftp_debug ('Error : PUT failed
'
);
      return 
FALSE;
    }

    
ftp_debug ((((('Storing local file "'.$localfile).'" to remote file "').$remotefile).'"
'
));
    while (!
feof ($fp))
    {
      
fputs ($sock_datafread ($fp4096));
    }

    
fclose ($fp);
    
ftp_close_data_connection ($sock_data);
    return 
ftp_ok ($sock);
  }

  function 
ftp_fput ($sock$remotefile$fp$mode 1)
  {
    if (
$mode)
    {
      
$type 'I';
    }
    else
    {
      
$type 'A';
    }

    
ftp_putcmd ($sock'PASV');
    
$string ftp_getresp ($sock);
    
ftp_putcmd ($sock'TYPE'$type);
    
ftp_getresp ($sock);
    if (
ftp_file_exists ($sock$remotefile))
    {
      
ftp_debug ('Warning : Remote file will be overwritten
'
);
    }

    
ftp_putcmd ($sock'STOR'$remotefile);
    
$sock_data ftp_open_data_connection ($string);
    if (!
$sock_data)
    {
      return 
FALSE;
    }

    if (
ftp_ok ($sock))
    {
      
ftp_debug ('Connected to remote host
'
);
    }
    else
    {
      
ftp_debug ('Cannot connect to remote host
'
);
      
ftp_debug ('Error : PUT failed
'
);
      return 
FALSE;
    }

    
ftp_debug ((((('Storing local file "'.$localfile).'" to remote file "').$remotefile).'"
'
));
    while (!
feof ($fp))
    {
      
fputs ($sock_datafread ($fp4096));
    }

    
ftp_close_data_connection ($sock_data);
    return 
ftp_ok ($sock);
  }

  function 
ftp_site ($sock$command)
  {
    
ftp_putcmd ($sock'SITE'$command);
    return 
ftp_ok ($sock);
  }

  function 
ftp_quit ($sock)
  {
    
ftp_putcmd ($sock'QUIT');
    if ((
ftp_ok ($sock) AND fclose ($sock)))
    {
      
ftp_debug ('Disconnected from remote host
'
);
      return 
TRUE;
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_putcmd ($sock$cmd$arg '')
  {
    if (!
$sock)
    {
      return 
FALSE;
    }

    if ((
$arg != ''))
    {
      
$cmd = (($cmd.' ').$arg);
    }

    
fputs ($sock, ($cmd.''));
    
ftp_debug ((('> '.$cmd).'
'
));
    return 
TRUE;
  }

  function 
ftp_getresp ($sock)
  {
    if (!
$sock)
    {
      return 
FALSE;
    }

    
$response '';
    do
    {
      
$res fgets ($sock512);
      (
$response .= $res);
    }while ((
substr ($res31) != ' '));

    
ftp_debug (str_replace ('
'
'
'
$response));
    return 
$response;
  }

  function 
ftp_ok ($sock)
  {
    if (!
$sock)
    {
      return 
FALSE;
    }

    
$response ftp_getresp ($sock);
    if (
ereg ('^[123]'$response))
    {
      return 
TRUE;
    }
    else
    {
      return 
FALSE;
    }

  }

  function 
ftp_file_exists ($sock$pathname)
  {
    if (!
$sock)
    {
      return 
FALSE;
    }

    
ftp_putcmd ($sock'MDTM'$pathname);
    if (
ftp_ok ($sock))
    {
      
ftp_debug ((('Remote file '.$pathname).' exists
'
));
      return 
TRUE;
    }
    else
    {
      
ftp_debug ((('Remote file '.$pathname).' does not exist
'
));
      return 
FALSE;
    }

  }

  function 
ftp_close_data_connection ($sock)
  {
    
ftp_debug ('Disconnected from remote host
'
);
    return 
fclose ($sock);
  }

  function 
ftp_open_data_connection ($string)
  {
    
$data ereg_replace ((''.'^.*\(([0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+,[0-9]+)\).*$'), '\1'$string);
    
$DATA explode (','$data);
    
$ipaddr = (((((($DATA[0].'.').$DATA[1]).'.').$DATA[2]).'.').$DATA[3]);
    
$port = (($DATA[4] * 256) + $DATA[5]);
    
$data_connection fsockopen ($ipaddr$port);
    if (
$data_connection)
    {
      
ftp_debug ((((('Trying to '.$ipaddr).':').$port).' ...
'
));
      return 
$data_connection;
    }
    else
    {
      
ftp_debug ((((('Error : Cannot open data connection to '.$this->server).':').$port).'
'
));
      
ftp_debug ((((('Error : '.$errstr).' (').$errno).')
'
));
      return 
FALSE;
    }

  }

  function 
ftp_debug ($message '')
  {
    global 
$ftp_debug;
    if (
$ftp_debug)
    {
      echo 
$message;
    }

    return 
TRUE;
  }

  
$ftp_debug FALSE;
  
$ftp_umask 18;
  
$ftp_timeout 30;
  if (!
defined ('FTP_BINARY'))
  {
    
define ('FTP_BINARY'1);
  }

  if (!
defined ('FTP_ASCII'))
  {
    
define ('FTP_ASCII'0);
  }

?>
2006-7-28 06:30 PM#1
查看资料  发短消息  顶部
 
Ymir
新手上路
Rank: 1



UID 72483
精华 0
积分 24
帖子 45
金钱 24 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-4-28
状态 离线
[推荐阅读] 服务器
晕倒,乱七八糟的

不想贴附件,还得扣大家的money
2006-7-28 06:31 PM#2
查看资料  发短消息  顶部
 
只爱一个人 (只爱一个人)
论坛元老
Rank: 8Rank: 8
超级管理员



UID 29639
精华 0
积分 3779
帖子 1616
金钱 3779 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2004-6-26
状态 离线
[推荐阅读] 老问题:类
晕,比我的头发还要乱,我虽然懒,但也不看啦
2006-7-28 07:06 PM#3
查看资料  访问主页  Blog  发短消息  顶部
 
LuckLrj (中国php中的爱因斯坦)
版主
Rank: 7Rank: 7Rank: 7
老会员


UID 64836
精华 0
积分 2309
帖子 3102
金钱 2309 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2005-6-19
状态 离线
[推荐阅读] 关于那个用PHP的fsockopen写的HTTP的下载类
PHP函数实际用处不太大。服务器又ftp干嘛呢?



学习,工作累了,请访问我的小站,娱乐一下。http://www.52sunny.net
2006-7-28 08:48 PM#4
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.103899 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP