验证FTP凭据

时间:2014-03-04 13:08:13

标签: php linux ftp

我正在编写一个PHP页面,它存储了FTP帐户的地址,用户名和密码。

我需要针对服务器验证它们,并告诉用户提供的凭据是否正常工作。

可以触发系统命令,最好使用系统命令,以便可以编写可重用的脚本。

那么有人能告诉我如何在bash上验证ftp凭据吗?我是CentOS。

4 个答案:

答案 0 :(得分:1)

您可以使用ftp_connect()ftp_login()

<?php

$conn = ftp_connect($ftp_server);
$result = ftp_login($conn, $ftp_user_name, $ftp_user_pass);

if ((!$conn) || (!result)) {
    echo "Failed";
} else {
    echo "Success";
}

ftp_close($conn);

答案 1 :(得分:1)

<?php
function testFtpCredentials($server, $username, $password){
    if(!is_string($server) or !strlen($server = trim($server))){
        return null;
    }
    if(!is_string($username) or !strlen($username = trim($username))){
        return null;
    }
    if(!is_string($password) or !strlen($password = trim($password))){
        return null;
    }
    if(!$connection = ftp_connect($server)){
        return false;
    }
    $result = ftp_login($connection, $username, $password);
    ftp_close($connection);
    return (bool)$result;
}

// How to use it.
var_dump(testFtpCredentials('ftp.server', 'username', 'password'));
?>

一个功能。用它!不要为这么容易的任务进行系统调用。

答案 2 :(得分:0)

PHP有FTP Module可用于验证凭据

docs

的基本示例
<?php
// set up basic connection
$conn_id = ftp_connect($ftp_server); 

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
    exit; 
} else {
    echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!";
} else {
    echo "Uploaded $source_file to $ftp_server as $destination_file";
}

// close the FTP stream 
ftp_close($conn_id); 
?>

当然,如果您真的想通过exec()或其他东西在命令行上进行FTP,那么有these docs之类的资源可以提供帮助。

我刚试过的一个工作示例:

file:ftp.sh

#! /bin/bash

USER=user@domain.com
PASS=xxxxxxxxxxxx

ftp -inv domain.com <<EOF
user $USER $PASS

ls -l

file:index.php

$result = shell_exec('sh ftp.sh');
var_dump($result);

答案 3 :(得分:0)

您可以使用此代码

try {
        $con = ftp_connect($server);
        if (false === $con) {
            throw new Exception('Unable to connect');
        }

        $loggedIn = ftp_login($con,  $username,  $password);
        if (true === $loggedIn) {
            echo 'Success!';
        } else {
            throw new Exception('Unable to log in');
        }

        print_r(ftp_nlist($con, "."));
        ftp_close($con);
    } catch (Exception $e) {
        echo "Failure: " . $e->getMessage();
    }