Créer une classe pour se connecter au ftp

Fermé
Splagadou Messages postés 7 Date d'inscription lundi 8 décembre 2014 Statut Membre Dernière intervention 13 juin 2019 - 27 mars 2015 à 16:11
Splagadou Messages postés 7 Date d'inscription lundi 8 décembre 2014 Statut Membre Dernière intervention 13 juin 2019 - 28 mars 2015 à 14:34
Bonjour à tous,

Voilà, je suis en train de monter un petit projet perso (on reste dans le débutant) dans lequel j'ai besoin de créer un module qui va chercher tout seul des infos sur mon ftp pour les afficher, les traiter etc.

J'ai écrit le code suivant pour me connecter et ça fonctionne (enfin, c'est surtout le code du manuel php, j'ai pas fait grand-chose non plus) :

<?php

$ftp_server = "ftpAA";
$ftp_user = "BB@BB.fr";
$ftp_pass = "CC";

// Mise en place d'une connexion basique
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// Tentative d'identification
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo "Connecté en tant que $ftp_user@$ftp_server\n";
} else {
echo "Connexion impossible en tant que $ftp_user\n";
}

// Fermeture de la connexion
ftp_close($conn_id);
?>


Du coup, pour réutiliser plus facilement ce code sur d'autres modules, je voudrais le transformer en classe. Malheureusement, j'y connais pas grand-chose vu que ça ne marche pas tellement.

J'ai créé deux fichiers : FTP.class.php et index.php pour tester rapido sur un serveur, mais rien ne se passe (je pense que c'est au niveau de la transmission des infos que ça plante, mais évidemment je n'en sais rien). Voici le code :

FTP.class.php

<?php

// INITIALISATION
class FTP{
private $ftp_stream;
private $ftp_host;
private $ftp_user;
private $ftp_password;
private $ftp_port;

function __construct() {

$this->ftp_stream="";
$this->ftp_host="";
$this->ftp_user="";
$this->ftp_password="";
$this->ftp_port="";
}

function __destruct() {}


// METHODES
protected function connexion() {
$conn_id = ftp_connect($this->ftp_stream;) or die("Couldn't connect to $ftp_stream");

if (@ftp_login($conn_id, $ftp_user, $ftp_password)) {
echo "Connecté en tant que $ftp_user sur le serveur $ftp_stream\n";
}
else {
echo "Connexion impossible en tant que $ftp_user\n";
}
}
} ?>


Index.php

<?php

require 'FTP.class.php';

$ftp = new FTP;
$ftp->connexion('ftpAA', 'BB', 'CC');

?>


Je ne suis pas du tout sûr de ce code là, c'est ici que j'ai le moins de connaissance, j'ai commencé à lire des trucs sur les classes y a un mois environ et je n'arrive à rien. Mais j'ai bon espoir que ça change :). Le truc c'est que index.php devrait se connecter au FTP et m'afficher le message "youpi je suis connecté" comme sur le premier exemple.
Si j'ai bien compris, le __construct me permet de mettre à 0 les valeurs de l'objet à chaque instance, et il faudrait donc que je passe mes params de connexion quand je crée un objet, comme sur le index.php. Mais je me trompe peut-être sur l'endroit où les passer ? ou juste sur le code en lui-même, mais là, je vois pas où du tout.

Voilà voilà, donc si quelqu'un avait une idée, un conseil, n'importe quoi qui me permette d'avancer sur ce problème, merci bien.
A voir également:

1 réponse

Splagadou Messages postés 7 Date d'inscription lundi 8 décembre 2014 Statut Membre Dernière intervention 13 juin 2019
28 mars 2015 à 14:34
Ca ça marche :

Index.php

<?php
require 'connexion.class.php';

//(hote, utilisateur, mdp, port)
$connexion = new Connexion("", "", "", "");
?>


Connexion.class.php

<?php

class Connexion {
private $_ftp_host;
private $_ftp_user;
private $_ftp_pass;
private $_ftp_port;

function __construct($a, $b, $c, $d) {
$this->setHost($a);
$this->setUser($b);
$this->setPass($c);
$this->setPort($d);
$this->connexion_ftp();}

//GETTERS - SETTERS
function ftp_host() {return $this->_ftp_host;}
function ftp_user() {return $this->_ftp_user;}
function ftp_pass() {return $this->_ftp_pass;}
function ftp_port() {return $this->_ftp_port;}

function setHost($ftp_host) {$this->_ftp_host = $ftp_host;}
function setUser($ftp_user) {$this->_ftp_user = $ftp_user;}
function setPass($ftp_pass) {$this->_ftp_pass = $ftp_pass;}
function setPort($ftp_port) {$this->_ftp_port = $ftp_port;}

//METHODES
function connexion_ftp()
{
// Mise en place d'une connexion basique
$conn_id = ftp_connect($this->_ftp_host, $this->_ftp_port) or die("Impossible de se connecter à $this->_ftp_host");

// Tentative d'identification
if (@ftp_login($conn_id, $this->_ftp_user, $this->_ftp_pass)) {
echo "Connecté en tant que $this->_ftp_user sur le serveur $this->_ftp_host sur le canal $this->_ftp_port\n";
} else {
echo "Connexion impossible en tant que $this->_ftp_user\n";
}

// Fermeture de la connexion
ftp_close($conn_id);
}
}
?>
0