FTP 函数
在线手册:中文  英文

ftp_login

(PHP 4, PHP 5)

ftp_login登录 FTP 服务器

说明

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

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

参数

ftp_stream

FTP 连接的链接标识符。

username

用户名(USER)。

password

密码(PASS)。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。 如果登录失败,PHP 会抛出一个警告。

范例

Example #1 ftp_login() 例子

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

// 设置一个连接或失败时退出
$conn_id ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

// 尝试登录
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";
}

// 关闭连接
ftp_close($conn_id);  
?>


FTP 函数
在线手册:中文  英文

用户评论:

Patrick Otto (2012-06-21 22:21:28)

<?php

# This function fix problems with ftp login validation 

function connect_send_ftp($ftp_server$ftp_user_name$ftp_user_pass$remote_name$local_name) {
     
// valid host connection 
    
if (!ftp_connect($ftp_server))
         return 
false;
     
$conn_id ftp_connect($ftp_server);
         
    
// valid ftp login params, fast check
     
if(empty($ftp_user_name) or empty($ftp_user_pass))
         return 
false;
     
    
// using curl to valid login, fast check    
    
$curl curl_init();
     
curl_setopt($curlCURLOPT_URL,'ftp://'.preg_replace('/^ftp[:]\/\//i','',$ftp_server));
     
curl_setopt($curlCURLOPT_FTPLISTONLY1);
     
curl_setopt($curlCURLOPT_USERPWD$ftp_user_name.":".$ftp_user_pass);
     
curl_setopt($curlCURLOPT_RETURNTRANSFER1);
     
$valid_login curl_exec ($curl);    
    
    
// valid ftp login, primary
     
if(!$valid_login)
         return 
false;
 
    
// valid ftp login, secondary
     
if(!ftp_login($conn_id$ftp_user_name$ftp_user_pass))
         return 
false;
 
    
// passive result    
    
$passive_result ftp_pasv($conn_idtrue);
     
    
// save file send erros
     
$error ftp_put($conn_id$remote_name$local_nameFTP_ASCII);
 
    
// close connection
     
ftp_close($conn_id);
    
    
// return success or send erros
     
return $error;
 }

// set params
$ftp_server "ftp.example.com"
$ftp_user_name "user";
$ftp_user_pass "password";
$remote_name "my_remote_file_dir";
$local_name "my_local_file_dir";

// call the function
$conn connect_send_ftp($ftp_server$ftp_user_name$ftp_user_pass$remote_name$local_name);

// valid response
if(!$conn)
    die(
"FTP login failed..")

// if not erros, success
echo "FTP login and file sended sucessfull!"

?>

mattsch at gmail dot com (2010-11-30 20:12:14)

Note that to make an anonymous ftp connection, you need to specify "anonymous" as the username and "" (empty string) as the password.

Example:
<?php
ftp_login
('ftp.example.com''anonymous''');
?>

Guibod (2004-10-26 01:37:14)

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";
?>

易百教程