FTP Functions
Online : zh en
PHP Manual

ftp_login

(PHP 4, PHP 5)

ftp_loginLogs in to an FTP connection

Description

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

Logs in to the given FTP stream.

Parameters

ftp_stream

The link identifier of the FTP connection.

username

The username (USER).

password

The password (PASS).

Return Values

Returns TRUE on success or FALSE on failure. If login fails, PHP will also throw a warning.

Examples

Example #1 ftp_login() example

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

// close the connection
ftp_close($conn_id);  
?>


FTP Functions
Online : zh en
PHP Manual
PHP ÷≤Š - N: Logs in to an FTP connection

User contributed notes:

mattsch at gmail dot com (01-Dec-2010 04:12)

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 (26-Oct-2004 09: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";
?>