我正在编写一个PHP页面,它存储了FTP帐户的地址,用户名和密码。
我需要针对服务器验证它们,并告诉用户提供的凭据是否正常工作。
可以触发系统命令,最好使用系统命令,以便可以编写可重用的脚本。
那么有人能告诉我如何在bash上验证ftp凭据吗?我是CentOS。
答案 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可用于验证凭据
的基本示例<?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();
}