Ron Piggott
2014-02-13 17:58:48 UTC
Good afternoon.
I have just begun creating my own classes. I am struggling to understand how to pass the FTP connection âresourceâ to the various functions. When I run this class the FTP server connection appears to be timing out from an unsuccessful login (with the command âsetFtpLoginâ). The database functions retrieving server & login credentials are both working and returning the expected values.
As I look over my programming to create this e-mail I *think* some of my problem is partially with my use of â$this->connectionâ. I am unsure of how to correctly code the FTP connection resource within the context of a class.
I am receiving the following 2 errors:
PHP Warning: ftp_login() expects parameter 1 to be resource, boolean given
PHP Warning: ftp_close() expects parameter 1 to be resource, null given
For anyone who is able to respond I am not just looking for an answer. I want to learn at the same time. If you are able to give me a small explanation I would very much appreciate it.
This is the code which uses the FTP class:
<?php
# create backup class
$remote_backup = new remote_backup();
# connect to FTP server
$ftp_login_server = $remote_backup->getFtpLoginServer( );
$connection = $remote_backup->setFtpConnection( $ftp_login_server['host'] , $ftp_login_server['port'] , $ftp_login_server['timeout'] );
# login to FTP server
$ftp_login_credential = $remote_backup->getFtpLoginCredential( );
$remote_backup->setFtpLogin( $ftp_login_credential['username'] , $ftp_login_credential['password'] );
# disconnect from FTP server
$remote_backup->closeFtpConnection( );
?>
This is the actual class with functions related to the above code:
<?php
class remote_backup {
public $connection;
/**
* Get FTP Login Server
*
* @return mixed
*/
public function getFtpLoginServer( ) {
$dsh = "mysql:host=localhost;dbname=" . $MariaDB['db']['database'];
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']);
$query = "SELECT `host`, `port`, `timeout` FROM `remote_backup_login` WHERE `date_effective` <= UTC_TIMESTAMP() ORDER BY `date_effective` DESC LIMIT 1";
if ($stmt = $dbh->prepare($query)) {
if ($stmt->execute() or die(print_r($stmt->errorInfo(), true))) {
while ($row = $stmt->fetch()) {
$ftp_login_server['host'] = stripslashes( $row['host'] );
$ftp_login_server['port'] = $row['port'];
$ftp_login_server['timeout'] = $row['timeout'];
}
}
}
unset($dbh);
if ( isset( $ftp_login_server ) ) {
return $ftp_login_server;
} else {
return NULL;
}
}
/**
* Set FTP Connection
*
* @param string $host
* @param int $port
* @param int $timeout
*
* @return $this
*/
public function setFtpConnection( $host , $port , $timeout ) {
$this->connection = ftp_connect( $host , $port , $timeout );
return $this;
}
/**
* Get FTP Connection
*
* @return mixed
*/
public function getFtpConnection( ) {
return $this->connection;
}
/**
* Get FTP Login Credential
*
* @return mixed
*/
public function getFtpLoginCredential( ) {
$dsh = "mysql:host=localhost;dbname=" . $MariaDB['db']['database'];
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']);
$query = "SELECT `username`, `password` FROM `remote_backup_login` WHERE `date_effective` <= UTC_TIMESTAMP() ORDER BY `date_effective` DESC LIMIT 1";
if ($stmt = $dbh->prepare($query)) {
if ($stmt->execute() or die(print_r($stmt->errorInfo(), true))) {
while ($row = $stmt->fetch()) {
$ftp_login_credential['username'] = stripslashes( $row['username'] );
$ftp_login_credential['password'] = stripslashes( $row['password'] );
}
}
}
unset($dbh);
if ( isset( $ftp_login_credential ) ) {
return $ftp_login_credential;
} else {
return NULL;
}
}
/**
* Set FTP Login
*
* @param string $username
* @param string $password
*
* @return $this
*/
public function setFtpLogin( $username , $password ) {
$this->connection = ftp_login( $this->getFtpConnection() , $username , $password );
return $this;
}
/**
* Close FTP Connection
*/
public function closeFtpConnection() {
ftp_close( $this->getFtpConnection() );
return;
}
}
?>
Thank you for your help.
Ron
Ron Piggott
www.TheVerseOfTheDay.info
I have just begun creating my own classes. I am struggling to understand how to pass the FTP connection âresourceâ to the various functions. When I run this class the FTP server connection appears to be timing out from an unsuccessful login (with the command âsetFtpLoginâ). The database functions retrieving server & login credentials are both working and returning the expected values.
As I look over my programming to create this e-mail I *think* some of my problem is partially with my use of â$this->connectionâ. I am unsure of how to correctly code the FTP connection resource within the context of a class.
I am receiving the following 2 errors:
PHP Warning: ftp_login() expects parameter 1 to be resource, boolean given
PHP Warning: ftp_close() expects parameter 1 to be resource, null given
For anyone who is able to respond I am not just looking for an answer. I want to learn at the same time. If you are able to give me a small explanation I would very much appreciate it.
This is the code which uses the FTP class:
<?php
# create backup class
$remote_backup = new remote_backup();
# connect to FTP server
$ftp_login_server = $remote_backup->getFtpLoginServer( );
$connection = $remote_backup->setFtpConnection( $ftp_login_server['host'] , $ftp_login_server['port'] , $ftp_login_server['timeout'] );
# login to FTP server
$ftp_login_credential = $remote_backup->getFtpLoginCredential( );
$remote_backup->setFtpLogin( $ftp_login_credential['username'] , $ftp_login_credential['password'] );
# disconnect from FTP server
$remote_backup->closeFtpConnection( );
?>
This is the actual class with functions related to the above code:
<?php
class remote_backup {
public $connection;
/**
* Get FTP Login Server
*
* @return mixed
*/
public function getFtpLoginServer( ) {
$dsh = "mysql:host=localhost;dbname=" . $MariaDB['db']['database'];
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']);
$query = "SELECT `host`, `port`, `timeout` FROM `remote_backup_login` WHERE `date_effective` <= UTC_TIMESTAMP() ORDER BY `date_effective` DESC LIMIT 1";
if ($stmt = $dbh->prepare($query)) {
if ($stmt->execute() or die(print_r($stmt->errorInfo(), true))) {
while ($row = $stmt->fetch()) {
$ftp_login_server['host'] = stripslashes( $row['host'] );
$ftp_login_server['port'] = $row['port'];
$ftp_login_server['timeout'] = $row['timeout'];
}
}
}
unset($dbh);
if ( isset( $ftp_login_server ) ) {
return $ftp_login_server;
} else {
return NULL;
}
}
/**
* Set FTP Connection
*
* @param string $host
* @param int $port
* @param int $timeout
*
* @return $this
*/
public function setFtpConnection( $host , $port , $timeout ) {
$this->connection = ftp_connect( $host , $port , $timeout );
return $this;
}
/**
* Get FTP Connection
*
* @return mixed
*/
public function getFtpConnection( ) {
return $this->connection;
}
/**
* Get FTP Login Credential
*
* @return mixed
*/
public function getFtpLoginCredential( ) {
$dsh = "mysql:host=localhost;dbname=" . $MariaDB['db']['database'];
$dbh = new PDO($dsh, $MariaDB['db']['username'], $MariaDB['db']['password']);
$query = "SELECT `username`, `password` FROM `remote_backup_login` WHERE `date_effective` <= UTC_TIMESTAMP() ORDER BY `date_effective` DESC LIMIT 1";
if ($stmt = $dbh->prepare($query)) {
if ($stmt->execute() or die(print_r($stmt->errorInfo(), true))) {
while ($row = $stmt->fetch()) {
$ftp_login_credential['username'] = stripslashes( $row['username'] );
$ftp_login_credential['password'] = stripslashes( $row['password'] );
}
}
}
unset($dbh);
if ( isset( $ftp_login_credential ) ) {
return $ftp_login_credential;
} else {
return NULL;
}
}
/**
* Set FTP Login
*
* @param string $username
* @param string $password
*
* @return $this
*/
public function setFtpLogin( $username , $password ) {
$this->connection = ftp_login( $this->getFtpConnection() , $username , $password );
return $this;
}
/**
* Close FTP Connection
*/
public function closeFtpConnection() {
ftp_close( $this->getFtpConnection() );
return;
}
}
?>
Thank you for your help.
Ron
Ron Piggott
www.TheVerseOfTheDay.info