SweetyMech
Messages postés2Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 mai 2007
-
24 mai 2007 à 15:18
SweetyMech
Messages postés2Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 mai 2007
-
25 mai 2007 à 10:25
Bonjour,
J'explique mon cas :
Je souhaite faire un client FTP en Web. Jusque là pas de Pb. En utilisant le PHP, j'arrive à me débrouiller sans pb.
Je suis donc parti du code suivant :
<?php
function selectimg($droit,$ext)
{
return $img;
}
function ls($conn_id) // sert à afficher la liste des fichiers
{
$ind_doss=0;
$ind_fich=0;
$tableau=ftp_rawlist($conn_id, "."); // je fais un "dir" et je stocke le résultat dans tableau[]
/*echo "<table width=\"500\" border=\"1\">";
echo "<br>";*/
if ($tableau) // si la commande a marché
{
for($i=0;$i<count($tableau);$i++) // je nettoi le résultat
{
$chaine = trim($tableau[$i]); // => je vire les espaces au début & à la fin
for ($j=0;$j<20;$j++)
{
$chaine = str_replace(" "," ",$chaine); // => Je vire les espaces en trop au milieu de la chaine
}
list($droit,$temp,$group,$owner,$size,$mois,$jour,$tmp2,$nom)=explode(" " , $chaine);
$ext =substr($nom, strlen($nom)-4, strlen($nom)-1); // extention du fichier
// icone du fichier
if (strpos(" ".$droit,"d"))
{
$img="/swing/ftp/img/dossier.bmp"; // C'est un dossier
$dossier[$ind_doss]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_doss++;
}
else { // C'est un fichier
if ($ext==".txt")
{
$img="/swing/ftp/img/txt.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
else {
if ($ext==".doc")
{
$img="/swing/ftp/img/doc.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
else {
if ($ext==".jpg")
{
$img="/swing/ftp/img/jpg.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
else{
if ($ext==".xls")
{
$img="/swing/ftp/img/xls.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
else {
if ($ext==".zip")
{
$img="/swing/ftp/img/zip.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
else {
$img="/swing/ftp/img/other.bmp";
$fichier[$ind_fich]=$img." ".$droit." ".$group." ".$owner." ".$size." ".$nom;
$ind_fich++;
}
}
}
}
}
}
//echo "<tr>";
// <a href=google.fr img src=\"/swing/ftp/img/download.bmp\"> </a>
/*echo "
<td width=\"5%\">
<img src=\"$img\">
<td width=\"85%\">
$droit $group $owner $size $nom
<td width=\"5%\">
<img src=\"/swing/ftp/img/download.bmp\">
<td width=\"5%\">
<img src=\"/swing/ftp/img/corbeille.bmp\">
</td>"; // on affiche le fichier.
echo "</tr>";*/
}
//echo "</table>";
}
else
{
echo "ça merdoit comme il faut !!! <br>";
}
echo "<table width=\"500\" border=\"1\">";
echo "<br>";
echo "<tr>";
echo " <td width=\"5%\">
<img src=/swing/ftp/img/dossier.bmp>
<td width=\"20\">
<b> .. </b>
<td width=\"65%\">
<td width=\"5%\">
<td width=\"5%\">
";
echo "</tr>";
for($i=0;$i<count($dossier);$i++)
{
list($img,$droit,$group,$owner,$size,$nom)=explode(" " , $dossier[$i]);
echo "
<td width=\"5%\">
<img src=\"$img\">
<td width=\"20\">
<b> $nom </b>
<td width=\"65%\">
$droit $size
<td width=\"5%\">
<img src=\"/swing/ftp/img/download.bmp\">
<td width=\"5%\">
<img src=\"/swing/ftp/img/corbeille.bmp\">
</td>"; // on affiche le fichier.
echo "</tr>";
}
for($i=0;$i<count($fichier);$i++)
{
list($img,$droit,$group,$owner,$size,$nom)=explode(" " , $fichier[$i]);
echo "
<td width=\"5%\">
<img src=\"$img\">
<td width=\"20\">
<b> $nom </b>
<td width=\"65%\">
$droit $size
<td width=\"5%\">
<img src=\"/swing/ftp/img/download.bmp\">
<td width=\"5%\">
<img src=\"/swing/ftp/img/corbeille.bmp\">
</td>"; // on affiche le fichier.
echo "</tr>";
}
echo "</table>";
}
$ftp_server="192.168.0.13";
$ftp_user_name="fred";
$ftp_user_pass="fred";
// Création de la connexion
$conn_id = ftp_connect("$ftp_server");
// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
echo "La connexion FTP a échoué!";
echo "Tentative de connexion à $ftp_server avec $ftp_user_name";
die;
} else {
echo "Connecté au serveur ftp : $ftp_server <br> Login utilisé : $ftp_user_name <br>";
}
ls($conn_id);
// Téléchargement d'un fichier.
//$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);
// Vérification de téléchargement
//if (!$upload) {
// echo "Le téléchargement Ftp a échoué!";
// } else {
// echo "Téléchargement de $source_file sur $ftp_server en $destination_file";
// }
// Fermeture de la connexion FTP.
ftp_quit($conn_id);
echo "<br> Déconnextion de $ftp_user_name sur le serveur $ftp_server";
?>
Maintenant, j'aimerai, avant de continuer, faire en sorte que mon code soit dynamique.
C'est à dire que j'ai un bouton pour me déconnecter du serveur sans avoir à recharger la page. C'est exactement l'intéret du HTTP Request. Donc je fais ce qui suis :
le code http request
<html>
<head>
<script type="text/javascript">
var xmlhttp
var IdConn
function state_Change() // traitement de la réception des données httprequest
{
var reponse
document.getElementById('T1').innerHTML="[chargement en cours]";
if (xmlhttp.readyState==4) // Si toutes les donnée sont reçues
{
if (xmlhttp.status==200)
{
IdConn = xmlhttp.responseText // je stocke les données dans IdConn
document.getElementById('T1').innerHTML = IdConn; // affichage dans le Div T1
}
}
}
function HttpRequest(url)
{
xmlhttp=null
xmlhttp=new XMLHttpRequest() // création de la requète httprequest
if (xmlhttp!=null) // Si la création a fonctionné :
{
xmlhttp.onreadystatechange=state_Change // Dès qu'il y a un changement d'état => execute state_Change
xmlhttp.open("GET",url,true) // ouvre du fic en GET
xmlhttp.send(null) // envoi de la requète
}
}
function connexion()
{
HttpRequest('connexion.php')
}
function logout()
{
var send //="logout.php&conn_id="+document.getElementById('T2').value
//document.getElementById('T1').innerHTML=document.getElementById('T2').value;
//send = document.getElementById('T1').innerHTML;
send='logout.php&conn_id="'+IdConn+'"';
// alert(send);
//alert(document.getElementById('T1').innerHTML);
document.getElementById('T1').innerHTML=HttpRequest('ls.php&'+send')
}
</script>
</head>
<div id="T1" style="border:1px solid black;height:400;width:800"></div><br />
<button onClick="javascript: connexion()">Connexion</button>
<button onClick="javascript: logout()">logout</button>
<p> </p>
</p>
</body>
</html>
Le fichier connexion.php :
<?php
$ftp_server="192.168.0.13";
$ftp_user_name="fred";
$ftp_user_pass="fred";
// Création de la connexion
$conn_id = ftp_connect("$ftp_server");
// Authentification avec nom de compte et mot de passe
$login_result = ftp_login($conn_id, "$ftp_user_name", "$ftp_user_pass");
// Vérification de la connexion
if ((!$conn_id) || (!$login_result))
{
echo "Echec Connexion Erreur 1";
} else
{
echo "$conn_id";
}
ftp_quit($conn_id);
?>
ça marche maintenant je rajoute l'affichage d'un répertoire :
<?php
$conn_id=$_GET['conn_id'];
//$conn_id="Resource id #2";
if (!$conn_id)
{
echo "Echec ! Numero de connexion non definit.";
} else
{
if (ftp_pwd($conn_id))
{
echo "ftp_pwd($conn_id)";
} else
{
echo "erreur à la l'envoi de la requète";
}
}
?>
Et là ça ne marche pas :(
Pourquoi ? parceque le contenu de l'id de connexion ftp à transmettre aux différents fichiers php est 'Resource id #2' et il y a des caractères interdits (le #).
Trouvez des réponses à vos questions sur la création de sites web, le référencement et les meilleures pratiques pour gérer un site. Échangez avec d'autres webmasters passionnés pour améliorer vos compétences en ligne et optimiser vos projets de site web.