ftp_login()
La fonction ftp_login() en PHP authentifie un utilisateur sur un serveur FTP avec un nom d'utilisateur et un mot de passe. Trois paramètres requis.
La fonction PHP ftp_login() authentifie un utilisateur auprès d'un serveur FTP. Il s'agit de la deuxième étape de presque chaque session FTP : vous ouvrez d'abord une connexion avec ftp_connect(), puis appelez ftp_login() pour vous identifier avant de pouvoir lister, télécharger ou envoyer des fichiers. Cette page explique les paramètres, la valeur de retour, la gestion d'un échec de connexion et les pièges les plus courants (mode passif, connexions sécurisées et sécurité des identifiants).
Qu'est-ce que ftp_login() ?
ftp_login() est une fonction intégrée PHP qui se connecte à un serveur FTP avec un nom d'utilisateur et un mot de passe. La connexion doit déjà être ouverte — ftp_login() ne se connecte pas par elle-même ; elle s'authentifie sur un handle de connexion existant.
Elle prend trois paramètres :
ftp— l'identifiant de connexion retourné parftp_connect()(ouftp_ssl_connect()).username— le nom d'utilisateur pour la connexion. Utilisezanonymouspour les serveurs FTP anonymes.password— le mot de passe pour la connexion. Pour les connexions anonymes, une adresse e-mail est conventionnelle.
La fonction retourne un boolean : true en cas de connexion réussie, false en cas d'échec (identifiants incorrects, compte non autorisé à se connecter, etc.).
Syntaxe de ftp_login()
ftp_login(FTP\Connection $ftp, string $username, string $password): boolRemarque : Avant PHP 8.1, le premier paramètre était une
resourceretournée parftp_connect(). À partir de PHP 8.1, il s'agit d'un objetFTP\Connection. Le code appelant ne change pas — seul le type sous-jacent change.
Utilisation de base
Une session complète et correcte associe toujours la connexion à un login et à une fermeture. Notez que la valeur de retour de ftp_connect() est vérifiée avant même que ftp_login() soit tentée, car se connecter avec false provoquerait une TypeError.
<?php
// 1. Open a connection (returns false on failure)
$conn = ftp_connect('ftp.example.com');
if ($conn === false) {
exit("Could not connect to the FTP server.\n");
}
// 2. Authenticate
if (ftp_login($conn, 'username', 'password')) {
echo "Logged in successfully.\n";
// ... work with files here ...
} else {
echo "Login failed: check the username and password.\n";
}
// 3. Always close the connection when finished
ftp_close($conn);Les trois appels — connexion, login, fermeture — encadrent chaque tâche FTP. Consultez ftp_close() pour comprendre pourquoi la libération du handle est importante.
Gestion des erreurs dans ftp_login()
ftp_login() retourne false en cas de mauvais login, mais émet également un avertissement PHP. En production, vous souhaitez généralement supprimer cet avertissement et décider vous-même de la marche à suivre. Utilisez l'opérateur @ pour faire taire l'avertissement et branchez-vous sur la valeur de retour :
<?php
$conn = ftp_connect('ftp.example.com');
if ($conn === false) {
echo "Login failed.\n";
} elseif (@ftp_login($conn, 'username', 'wrong-password') === false) {
echo "Login failed.\n";
} else {
echo "Login successful.\n";
}Pour un hôte inaccessible ou des identifiants incorrects, cela affiche Login failed. au lieu de planter ou d'exposer un avertissement brut sur la page.
Mode passif et connexions sécurisées
Deux problèmes surviennent fréquemment après une connexion réussie :
- Mode passif. De nombreux serveurs (et la plupart des configurations NAT/pare-feu) requièrent le mode passif pour les transferts de données tels que les listes de répertoires et les téléchargements. Activez-le avec
ftp_pasv()— mais uniquement après queftp_login()a réussi, jamais avant. - Chiffrement. Le FTP standard envoie le nom d'utilisateur et le mot de passe en clair. Préférez FTP sur SSL/TLS en ouvrant la connexion avec
ftp_ssl_connect();ftp_login()fonctionne alors exactement de la même façon.
<?php
$conn = ftp_ssl_connect('ftp.example.com'); // encrypted control channel
if ($conn && ftp_login($conn, 'username', 'password')) {
ftp_pasv($conn, true); // enable passive mode after login
// ... transfer files ...
ftp_close($conn);
}Pièges courants
- Ne jamais coder les identifiants en dur dans un code que vous commitez. Lisez-les à partir de variables d'environnement ou d'un fichier de configuration exclu du contrôle de version.
ftp_login()ne se connecte pas. Si vous lui passez une chaîne de nom d'hôte au lieu d'un handle de connexion, vous obtenez uneTypeError. Appelez toujoursftp_connect()en premier.- Un retour
truesignifie seulement que l'authentification a réussi. Cela ne dit rien sur les permissions — un upload ultérieur peut toujours échouer si le compte n'a pas les droits d'écriture.
Conclusion
ftp_login() authentifie une connexion FTP ouverte avec un nom d'utilisateur et un mot de passe, retournant true ou false. Connectez-vous toujours en premier, vérifiez la valeur de retour, activez le mode passif après la connexion si nécessaire, et préférez une connexion chiffrée en production. Pour l'ensemble des fonctions associées, consultez la référence PHP FTP.