Ftp en php caracteres speciaux

Bonjour,

j utilise un ftp pour modifier les textes d un xml en ligne.

le probleme c est que cette application ne gere pas les caracteres speciaux

é donne é

comment regler ce probleme ?
Configuration: Windows XP
Firefox 3.0.5

3 réponses

  1. Bonjour,

    La fonction htmlentities($texte) devrait pouvoir résoudre tes problèmes :)
    1. Bonjour,

      je viens d essayer $txt = htmlentities($txt);

      mais l affichage de ma page xml en line é donne toujours é

      et si j essaye de faire un modification,

      c est un carré qui est a la place du é

      une idée ?

      je vais envoyer mon script peut etre y cerrais vous plus clair :)
    2. @Mj7<?php

      $txt = htmlentities($txt);

      $cheminimages = './fichiers_systeme';

      $ordretri = '0'; // 0 pour l'affichage par type de fichier, 1 pour l'ordre alphabétique

      $suppressioncomplete = true;

      function supprimer_rep ($dir) { // fonction pour supprimer un ou plusieurs repertoires et tout ce qu'il y a dedans
      if (file_exists ($dir)) {
      $dh = opendir ($dir);
      while (($file = readdir ($dh)) !== false ) {
      if ($file !== '.' && $file !== '..') {
      if (is_dir ($dir.'/'.$file)) {
      supprimer_rep ($dir.'/'.$file); // si on trouve un repertoire, on fait un appel recursif pour fouiller ce repertoire
      }
      else {
      if (file_exists ($dir.'/'.$file)) {
      unlink ($dir.'/'.$file); // si on trouve un fichier, on le supprime
      }
      }
      }
      }
      closedir ($dh);
      if (is_dir ($dir)) {
      rmdir ($dir); // on supprime le repertoire courant
      }
      return true;
      }
      }

      function cmp($ar1, $ar2){

      global $ordretri;

      if($ordretri == 0){
      $key1 = 0;
      $key2 = 1;
      }
      else{
      $key1 = 1;
      $key2 = 0;
      }

      if(strtoupper($ar1[$key1]) > strtoupper($ar2[$key1])){
      return 1;
      }
      elseif(strtoupper($ar1[$key1]) === strtoupper($ar2[$key1])){

      if(strtoupper($ar1[$key2]) > strtoupper($ar2[$key2])){
      return 1;
      }
      else {
      return -1;
      }

      }
      else {
      return -1;
      }
      }

      function tri($array){

      usort($array, 'cmp');
      return $array;
      }

      function ftphp(){

      global $cheminimages;

      $dossier='.';
      if(isset($_GET['dossier'])){
      $dossier = stripslashes($_GET['dossier']);
      if(!is_dir($dossier)){
      $dossier = '.';
      }
      }
      if(!isset($_GET['dossier2'])){

      $handle = opendir($dossier);

      $fichier = array();

      while (false!==($file = readdir($handle))) {

      if(!in_array($file, array('.'))){

      $ext_fichier = substr(strrchr($file, '.'), 1);

      if($dossier.'/'.$file != './..' and !is_file($dossier.'/'.$file)) {
      $file = '/'.$file;
      }

      if($dossier.'/'.$file != './..'){
      array_push($fichier, array(strtolower($ext_fichier), $file));
      }
      }
      }

      closedir($handle);

      $fichier = tri($fichier); //si l'on préfère classer les résultats par ordre alphabétique plutôt que par type de fichiers, il suffit de remplacer 1 par 0

      foreach($fichier as $value){

      if(ereg ('/', $value[1])){
      $value[1] = str_replace ('/', '', $value[1]);
      if($value[1] == '..'){
      if($dossier != '.'){
      $dossierprecedent = str_replace(strrchr($dossier, '/'), '', $dossier);
      echo '<img src="./fichiers_systeme/dossier.jpg"><a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossierprecedent).'"> '.$value[1].'</a><br />';
      }
      }
      else {
      echo '<img src="./fichiers_systeme/dossier.jpg"><a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier.'/'.$value[1]).'"> '.$value[1].'</a><br />';
      }
      }
      else {

      if((in_array($value[0], array('htm', 'html'))) and is_file($cheminimages.'/htm.jpg')){ echo '<img src="'.$cheminimages.'/htm.jpg"> ';}
      if((in_array($value[0], array('gif', 'jpg', 'jpeg', 'bmp'))) and is_file($cheminimages.'/img.jpg')){ echo '<img src="'.$cheminimages.'/img.jpg"> ';}
      if((in_array($value[0], array('php', 'php3'))) and is_file($cheminimages.'/php.jpg')){ echo'<img src="'.$cheminimages.'/php.jpg"> ';}
      if($value[0]=='css' and is_file($cheminimages.'/css.jpg')){ echo '<img src="'.$cheminimages.'/css.jpg"> ';}

      echo '<a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($value[1]).'&dossier2='.urlencode($dossier).'&action=sommaire"> '.$value[1].'</a><br />';
      }
      }

      echo '<br /><br /><table border="0" cellspacing="0" cellpadding="0"><tr><td>
      <form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=creerdossier" method="post">
      <input type="submit" value="Créer un nouveau dossier ici">

      </td></form></tr><tr><td>

      <form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=renommerdossier" method="post">
      <input type="submit" value="Renommer ce dossier">

      </td></form></tr><tr><td>

      <form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=uploader" method="post">
      <input type="submit" value="Ajouter des fichiers ici">

      </td></form></tr><tr><td>

      <form action="'.$_SERVER['PHP_SELF'].'?fichier=aucun&dossier2='.urlencode($dossier).'&action=supprimerdossier" method="post">
      <input type="submit" value="Supprimer ce dossier" style="color:#ff0000" onclick="return confirm(\'Supprimer l\\\'intégralité du dossier?\');">

      </td></form></tr></table>';
      }
      else {
      $dossier = stripslashes($_GET['dossier2']);

      //initialisation des variables
      $cible=0;
      $fichier='';
      if(isset($_GET['fichier'])){ $fichier = $_GET['fichier'];}
      $action='';
      if(isset($_GET['action'])){ $action = $_GET['action'];}
      if(isset($_POST['cible'])){ $cible = stripslashes($_POST['cible']);}

      //actions selon la demande precisée dans l'url

      //sommaire: affichage des differentes actions possibles pour le fichier
      if($action == 'sommaire'){
      if(is_file($dossier.'/'.$fichier)){

      $adresse = (str_replace('bzzz', '/', rawurlencode(str_replace('/', 'bzzz', $dossier.'/'.$fichier)))); //astuce pour bien encoder l'adresse de l'iframe, je ne m'en sortais pas avec les méthodes classiques

      echo '<table border="1" cellpadding="2" width="410"><tr><td colspan="2">Fichier: <b>'.$fichier.'</b></td></tr>
      <tr><td rowspan="6"><iframe src="'.$adresse.'"></iframe></td>';

      echo '
      <td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=supprimer" onclick="return confirm(\'Supprimer le fichier?\');">
      supprimer</a></td></tr>
      <tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=copier">
      copier</a></td></tr>
      <tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=deplacer">
      deplacer</a></td></tr>
      <tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=renommer">
      renommer</a></td></tr>
      <tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=telecharger">
      telecharger</a></td></tr>
      <tr><td><a href="'.$_SERVER['PHP_SELF'].'?fichier='.urlencode($fichier).'&dossier2='.urlencode($dossier).'&action=modifier">
      modifier</a></td></tr></table>';
      }
      else {
      echo 'Ce fichier n\'existe pas.';
      }
      }

      //action supprimer demandée
      if($action == 'supprimer'){
      if(is_file($dossier.'/'.$fichier)){
      unlink($dossier.'/'.$fichier);
      echo 'Le fichier a bien été supprimé.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      else {
      echo 'Le fichier n\'a pas été trouvé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action copier demandée
      if($action == 'copier'){
      if(is_file($dossier.'/'.$fichier)){

      echo 'Choissez le dossier cible:
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=copier1" method="post">
      <input type="text" size="20" name="cible" value="..">
      <input type="submit" value="copier"></form>';

      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action copier1 demandée (suite de copier)
      if($action == 'copier1'){
      if(is_file($dossier.'/'.$fichier)){
      copy($dossier.'/'.$fichier, $cible.'/'.$fichier);
      echo 'Le fichier a bien été copié. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($cible).'">Revenir au dossier</a>';
      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      // action deplacer demandée
      if($action == 'deplacer'){
      if(is_file($dossier.'/'.$fichier)){
      echo 'Choisissez le dossier cible:
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=deplacer1" method="post">
      <input type="text" size"20" name="cible" value="..">
      <input type="submit" value="deplacer"></form>';
      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action deplacer1 demandée (suite de deplacer)
      if($action == 'deplacer1'){
      if(is_file($dossier.'/'.$fichier)){
      rename($dossier.'/'.$fichier, $cible.'/'.$fichier);
      echo 'Le fichier a bien été déplacé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($cible).'">Revenir au dossier</a>';
      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action renommer demandée
      if($action == 'renommer'){
      if(is_file($dossier.'/'.$fichier)){

      echo 'Choisissez le nouveau nom :
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=renommer1" method="post">
      <input type="text" size"20" name="cible" value="'.$fichier.'">
      <input type="submit" value="renommer"></form>';
      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action renommer1 demandée (suite de renommer)
      if($action == 'renommer1'){
      if(is_file($dossier.'/'.$fichier)){

      rename($dossier.'/'.$fichier, $dossier.'/'.$cible);
      echo 'Le fichier a bien été renommé.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      else {
      echo 'Ce fichier n\'existe pas. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action telecharger demandée
      if($action == 'telecharger'){

      echo '
      <script language="javascript">
      w = window.open("ftphp.php","Telechargement","location=no,width=40,height=40,toolbar=no,scrollbars=no,resizable=no");
      w.parent.location.href="ftphp.php?dossier2='.$dossier.'&fichier='.$fichier.'&action=telecharger1";
      </script>
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';

      }

      if($action == 'telecharger1'){
      header('Content-disposition: attachment; filename='.$fichier);
      header('Content-Type: application/force-download');
      header('Content-Transfer-Encoding: fichier');
      header('Content-Length: '.filesize($dossier.'/'.$fichier));
      header('Pragma: no-cache');
      header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
      header('Expires: 0');
      readfile($dossier.'/'.$fichier);
      }

      //action modifier demandée
      if($action == 'modifier'){
      if(is_file($dossier.'/'.$fichier)){
      $fp = fopen($dossier.'/'.$fichier, 'r+');
      $contenu = fread($fp,5000000);
      $contenu = str_replace('</textarea>', '/textarea', $contenu);
      echo '
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&fichier='.urlencode($fichier).'&action=modifier1" method="post">
      <textarea rows="20" cols="49" name="cible">'.$contenu.'</textarea><br>
      <input type="hidden" name="fp" value="'.$fp.'">';

      echo '
      <input type="submit" value="modifier">
      <input type="reset" value="annuler les modifs">
      </form>';

      }
      else {
      echo 'Ce fichier n\'existe pas.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }

      }

      //action modifier1 demandée (suite de modifier)
      if($action == 'modifier1'){
      if(is_file($dossier.'/'.$fichier)){
      $fp = fopen($dossier.'/'.$fichier, 'w+');
      $cible = str_replace('/textarea', '</textarea>', $cible);
      fputs($fp, $cible);
      fclose($fp);
      echo 'Le fichier a bien été modifié.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      else {
      echo 'Ce fichier n\'existe pas.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action creerdossier demandée
      if($action == 'creerdossier'){
      echo 'Tapez le nom du dossier:
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=creerdossier1" method="post">
      <input type="text" size"20" name="cible">
      <input type="submit" value="creer"></form>';
      }

      //action creerdossier1 demandée (suite de creerdossier)
      if($action == 'creerdossier1'){
      if(is_dir($dossier) and !is_dir($dossier.'/'.$cible)){
      mkdir($dossier.'/'.$cible, 0777);
      echo 'Dossier créé. <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      else {
      echo 'Ce dossier existe déjà.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action renommerdossier demandée
      if($action == 'renommerdossier'){
      $anciennom = substr(strrchr($dossier, '/'), 1);
      echo 'Tapez le nouveau nom du dossier:
      <form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=renommerdossier1" method="post">
      <input type="text" size"20" name="cible" value="'.$anciennom.'">
      <input type="submit" value="Renommer"></form>';
      }

      //action renommerdossier1 demandée (suite de renommerdossier)
      if($action == 'renommerdossier1'){
      if(!is_dir($dossier.'/'.$cible)){
      $dossierprecedent = explode('/', $dossier);
      $nb = count($dossierprecedent);
      $dossierprec = $dossierprecedent[0];
      for ($i = 1; $i < $nb-1; $i++){
      $dossierprec .= '/'.$dossierprecedent[$i];
      }

      rename ($dossier, $dossierprec.'/'.$cible);
      echo 'Dossier renommé.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossierprec).'/'.urlencode($cible).'">Revenir au dossier</a>';
      }
      else {
      echo 'Il existe déjà un dossier portant ce nom.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';
      }
      }

      //action supprimerdossier demandée
      if($action == 'supprimerdossier'){
      supprimer_rep ($dossier);
      echo 'Le dossier a été supprimé.
      <a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'">Revenir au dossier</a>';

      }

      //action uploader demandee
      if($action == 'uploader'){

      echo '<form action="'.$_SERVER['PHP_SELF'].'?dossier2='.urlencode($dossier).'&action=uploader1" method="post" enctype="multipart/form-data">';
      echo '<table><tr><td>';

      for ($i = 1; $i < 11; $i++){
      echo '<input type="file" name="'.$i.'"><br>';
      }

      echo '</td><td>';

      for ($i = 11; $i < 21; $i++){
      echo '<input type="file" name="'.$i.'"><br>';
      }

      echo '</td></tr></table>';
      echo '<input type="submit" value="uploader"></form>';
      }

      //action uploader1 demandée (suite de uploader)
      if($action == 'uploader1'){
      for($i=1;$i!=21;$i++){
      if(!empty($_FILES[$i]['name'])){
      $nom_destination = $_FILES[$i]['name'];
      $nom_fichier = $_FILES[$i]['tmp_name'];
      $poidsFichier = $_FILES[$i]['size'] ;

      if($poidsFichier<100000000){ // taille max du fichier : vaut ici 100 Mo pour l'exemple

      $page = explode('.', $nom_destination);
      $nb = count($page);
      if(copy($nom_fichier, $dossier.'/'.$nom_destination)){
      echo $_FILES[$i]['name'].' : fichier envoyé.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
      }
      else {
      echo $nom_destination.' : erreur dans l\'envoi du fichier.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
      }
      }
      else {
      echo $nom_destination.' : le fichier dépasse la taille maximale autorisée.<a href="'.$_SERVER['PHP_SELF'].'?dossier='.urlencode($dossier).'"> Revenir au dossier</a><br />';
      }
      }
      }
      }
      }
      }

      ftphp();

      ?>
  2. Ta variable $txt doit correspondre à ton texte à convertir:

    $txt = "Caractères spéciaux €";
    $txt = htmlentities($txt);

    Voilou!
    1. alors

      en rajoutant header('Content-type: text/html; charset=UTF-8');

      je n ai plus de problemes de modification en ligne :)

      mais (evidement) a present j ai des erreures d ecriture sue la page php elle meme

      été donne �t�

      je brule...