Erreur: client FTP Web en HTTP Request

Fermé
SweetyMech Messages postés 2 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 25 mai 2007 - 24 mai 2007 à 15:18
SweetyMech Messages postés 2 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 25 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 #).

Pour faire simple, il faudrai que je puisse faire :
http://ls.php&conn_id=Resource id #2

Mais ça c'est pas possible. Alors comment faire ?
Merci de votre aide, ça fait trop longtemps que je bloque sur ce problème.
A voir également:

1 réponse

SweetyMech Messages postés 2 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 25 mai 2007
25 mai 2007 à 10:25
S'il vous plais, un petit coup de pouce, une indication, n'importe quoi qui me fasse avancer...

Merci
0