Ftp en php caracteres speciaux

Mj7 -  
 Mj7 -
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. Estydral Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   6
     
    Bonjour,

    La fonction htmlentities($texte) devrait pouvoir résoudre tes problèmes :)
    0
    1. Mj7
       
      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 :)
      0
      1. Mj7 > 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();

        ?>
        0
  2. Estydral Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   6
     
    Ta variable $txt doit correspondre à ton texte à convertir:

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

    Voilou!
    0
  3. Mj7
     
    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...
    0