ftp_login

(PHP 3 >= 3.0.13, PHP 4, PHP 5)

ftp_login -- 登录 FTP 服务器

说明

bool ftp_login ( resource ftp_stream, string username, string password )

使用用户名和密码登录入给定的 FTP 连接。

如果成功则返回 TRUE,失败则返回 FALSE

例子 1. ftp_login() 例子

<?php
$ftp_server
= "ftp.example.com";
$ftp_user = "foo";
$ftp_pass = "bar";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    echo
"Connected as $ftp_user@$ftp_server\n";
} else {
    echo
"Couldn't connect as $ftp_user\n";
}
?>

add a note add a note User Contributed Notes
Guibod
26-Oct-2004 04:37
ftp_login does not support ftp trough proxy authentication. So think about using the new PHP5 function ftp_raw() that's allow you to send directly FTP commands. ftp_raw() allow you to send commands prior to be connected (unlike ftp_exec()).

I've writen this piece of code that's allow you to connect through a "remoteid@remotehost proxyid" proxy.

<?php
function ftp_parse_response($response, &$errstr) {
   if(!
is_array($response)) {
      
$errstr    = 'Parameter \$response must be an array';
       return
false;
   }
      
   foreach(
$response as $r) {
      
$code    = substr(trim($r),0,3);

       if(!
is_numeric($code)) {
          
$errstr    = "$code is not a valid FTP code",$code);
       }
          
       if(
$code > 400) {
          
$errstr    = $r;
           return
false;
       }
   }
      
   return
true;
}

$user = "user";
$pass = "password";
$host = "ftp.example.com";
$proxyuser = "proxyuser";
$proxypass = "proxypass";
$proxyhost = "ftp.proxy.com";

$conn_id = ftp_connect($proxyhost);

if(!
$conn_id) {
   die(
"cannot connect to proxy");
}

$commands  = array(
  
"USER ".$user."@".$host." ".$proxyuser,
  
"PASS ".$pass,
  
"PASS ".$proxypass
);

foreach(
$commands as $c) {
  
$ret    = ftp_raw($conn_id,$c);

  
//you can write your own ftp_parse_response func that
   //use an array of string as input
  
if(!ftp_parse_response($ret,$errstr)) {
      
ftp_close($conn_id);
       die(
"cannot login to $host");
   }
}

echo
"ok, now connected";
?>