IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire et accents


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut Formulaire et accents
    bonjour, j'utilise sur une page de mon site un formulaire d'upload de fichier.

    si le nom du fichier uploadé contient des accents j'aimerai que les lettres accentuées soient remplacement par des lettres non accentuées.

    voici le code de ma page d'upload:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    <?
      /* PhpUpload
         script d'upload de fichiers
         François Lemarchand. Médiathèque d'Agneaux. 2001
              mail : françois.banholzer@online.fr
      */
     
      // variables de configuration
      // taille maximum (en octets) des fichiers à télécharger
      $MAX_SIZE = 10000000 ; 
     
      // autoriser ou non la suppression de fichiers (1=oui, 0=non)
      $ENABLE_RM = 1 ; 
    ?>
    <html>
    <head>
        <title>PhpUpload</title>
        <script language='JavaScript'>
        function testNomFichier(form)
        {
            /* cette fonction teste si le champ userfile_name du
               formulaire est bien renseigné */
     
    	taille = form.userfile.value.length;
     
    	if(taille == 0) 
    	{
    		alert("Spécifiez un nom de fichier.");  
    		erreur = false;
    	}
     
    	else erreur = true;
     
    	return erreur;
        }
        </script>
    <?php 
     
    function OterAccents($userfile) { 
    return( strtr( $userfile, 
    "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", 
    "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) ); 
    }
    ?>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
    <!--
    body,td,th {
    	color: #FFFFFF;
    }
    body {
    	background-color: #666666;
    }
    a:link {
    	color: #FFFFFF;
    }
    a:visited {
    	color: #FFFFFF;
    }
    a:hover {
    	color: #FFFFFF;
    }
    a:active {
    	color: #FFFFFF;
    }
    .Style1 {
    	color: #FFFF00;
    	font-weight: bold;
    }
    -->
    </style></head>
    <body>
      <h3>&nbsp;</h3>
      <div align='center'>
     
      <?
     
          // upload d'un fichier
     
     
         // on teste différentes conditions
     
          if(strlen($userfile_name) 
             && file_exists($userfile) 
             && stristr($userfile_name, ".php") == "") {
            if(!copy($userfile, $userfile_name))
              echo "<script language='javascript'>
                    alert('une erreur s'est produite pendant
                           le téléchargement.');</script>";
     
            // un peu de nettoyage peut faire du bien, "des coups que..."
     
            if(file_exists($userfile))
              unlink($userfile);
            }
      ?>
     
      <?
     
          // suppression d'un fichier
     
          // set mode = paranoïd !
     
          if($ENABLE_RM && $action=="del" && strlen($fichier)) {
    		// test de la forme du fichier :
    		// on interdit tous les noms qui commencent par un point (../, ./)
    		//  et http (merci à Jean-François Bernot pour avoir signalé la faille) 
     
    		if(!preg_match('/^\.|^http/si', $fichier)) 
           		unlink($fichier);
            $action = "";
            $fichier = "";
          }
      ?>
     
      <hr>
      <h4>Transf&eacute;rer un fichier vers votre site internet </h4>
      <p><a href="../../../../../admin/home.php"><img src="../../../../../retour.jpg" alt="" width="113" height="57" border="0"></a></p>
      <p class="Style1">!!! ATTENTION !!!</p>
      <p class="Style1">Ne pas transf&eacute;rer de fichier dont le nom comporte des accents ou des espaces! <br>
        Merci de renommer vos fichiers avant le transfert  </p>
      <form enctype='multipart/form-data' method='post' action='
         <? echo basename($PHP_SELF) ?>'>
        <input type='hidden' name='MAX_FILE_SIZE' value='<? echo $MAX_SIZE ?>'>
        <table border="0">
          <tr>
            <td><small>Fichier à télécharger</small></td>
          </tr>
          <tr>
            <td><input name='userfile' type='file' size='60'></td>
          </tr>
          <tr>
            <td align='center'>
              <input type='Submit' value='  Ok   '  
                  onclick='return testNomFichier(this.form)'>
              <input type='reset' value='Reset'>        </td>
          </tr>
        </table>
      </form>
      </div>
      <hr>
      <h4><? echo "contenu de ".dirname($PHP_SELF)."<br>" ?></h4>
      <ul>
      <?
        /* affichage des fichiers du répertoire */
     
        $fichier = array("");
        $d =0;
     
        /* ouverture du répertoire courant */
     
        $handle = opendir('.');
     
        /* lecture des entrées du répertoire */
     
        while ($entree = readdir($handle)) {
          if (is_file("$entree") && stristr($entree, ".php") == "") {
            $fichier[$d] = $entree;
            $d++;
          }
        }
     
        /* tri du tableau des fichiers */
     
        sort($fichier);
     
        /* affichage */
     
        for($key = 0; $key < $d; $key++) { 
          echo "<li>";
          echo $fichier[$key];
          echo "</a><small> (";
     
          // on rajoute la taille du fichier
     
          echo filesize($fichier[$key])." Octets) ";
     
         // et la date du téléchargement
     
         echo "téléchargé le ".date('j/m/Y',filemtime($fichier[$key]))." à ";
         echo date('h:i',filemtime($fichier[$key]));
     
         // lien pour la suppression
         if($ENABLE_RM) {
           echo " <A href='";
           echo "./".basename($PHP_SELF);
           echo "?action=del&fichier=$fichier[$key]'>Supprimer</A>";
         } 
     
         echo "</small></li>";
       } 
     
       closedir($handle);
     
      ?>
      </ul>
      <h3 align="center">&nbsp;</h3>
      <div align="center"><small>PhpUpload Fran&ccedil;ois Lemarchand. 2001</small> <a href='../upload.html'></a>  </div>
    <p>&nbsp;</p>
    </body>
    </html>

    voici le bout de code de la fonction qui devrait réécrire les accents:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
     
    function OterAccents($chaine) { 
    return( strtr( $chaine, 
    "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", 
    "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) ); 
    }
    ?>
    g remplacé $chaine par $userfile mais ca ne fonctionne pas!

    auriez vous une idée ?

    Merci d'avance

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ce que tu as mis dans le code c'est la définition de la fonction PHP, mais tu ne sembles pas y faire appel (du moins je ne l'ai pas vu dans le code).
    Il faut que quelquepart dans le code tu appelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OterAccents($nomfichier);

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut c pas gagné...
    re bonjour, et merci pour le coup de main.

    je viens d'ajouter la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php OterAccents($userfile); ?>

    mais le pb reste le même...

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par damien40
    re bonjour, et merci pour le coup de main.

    je viens d'ajouter la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php OterAccents($userfile); ?>

    mais le pb reste le même...
    Oui mais où l'as-tu ajoutée

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    bonjour, g ajouter l'appel de la fonction juste avant les ligne du formulaire...

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $userfile = OterAccents($userfile); ?>
    Il faut mettre a jour la variable avec la valeur retournée par la fonction

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    coucou, je viens d'ajouter le bout de code mais le pb reste le même, je comprends pas trop comment ca fonctionne tt çà....

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    C'est le but justement de comprendre, faut pas juste que ça marche sinon ça sert un peu à rien, tu risques d'avoir le même probleme dans le prochain formulaire.

    Alors pour commencer, affiche la variable avant l'appel à la fonction et après l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php 
    var_dump($userfile);
    $userfile = OterAccents($userfile); 
    var_dump($userfile);?>
    var_dump() c'est une fonction qui affiche le contenu de la variable, sa longueur (qui permet de vérifier qu'on n'a pas des caractères spéciaux de type html : &eacute; par exemple) et son type.

    Il faut que tu vérifies que tu as bien des accents AVANT l'appel, et qu'il n'y en a plus apres.
    Sinon, montres moi ce que ca t'affiche et le code de la page entière.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    voilà le résultat:

    string(14) "/tmp/phpiMvfZx" string(14) "/tmp/phpiMvfZx"

    string(14) "/tmp/phpiMvfZx" string(14) "/tmp/phpiMvfZx" /tmp/phpiMvfZx

    c ce ki apparait sur la page une fois que je valide le formulaire d'envoi

  10. #10
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par damien40
    voilà le résultat:

    string(14) "/tmp/phpiMvfZx" string(14) "/tmp/phpiMvfZx"

    string(14) "/tmp/phpiMvfZx" string(14) "/tmp/phpiMvfZx" /tmp/phpiMvfZx

    c ce ki apparait sur la page une fois que je valide le formulaire d'envoi
    Ouh la pk ca apparait plusieurs fois ???
    Dans tous les cas y a aucun accent dans tes noms de fichiers alors quel est le probleme?

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    le pb c pas au transfert car là tt est ok mais apres kan les users utilisent les fichiers transférés, bah ceux avec d espaces ou accents ca fait foirer le chemin du coup c pas bon....

  12. #12
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Oui mais tu dis que ca ne change rien, or tu fais un test sur un nom de fichier sans accent, donc je comprends pas quel est le probleme. Tu peux pas savoir si la fonction marche bien vu que tu ne la testes pas vraiment.

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    euh, je ne vois pas pourkoi tu dis çà car j'essaye avec un fichier contenant éèà ans le nom.

  14. #14
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Ben d'après ce que tu m'affiches le nom de ton fichier est "/tmp/phpiMvfZx"
    Je ne l'ai pas inventé

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    je pense plutôt ke je me suis trompé dans le nom de la variable....


    pour adapté le code c bien là mon pb...

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 59
    Points : 37
    Points
    37
    Par défaut
    bonjour, n'ayant pas réussi à faire fonctionner la fonction pour remplacer les accents dans les noms de fichiers je voudrais savoir si il était possible de vérifier au moment de la validation du formulaire si le nom du fichier contient des accents ou non ?

    merci d'avance

Discussions similaires

  1. Accents dans un formulaire
    Par pierrot10 dans le forum Langage
    Réponses: 3
    Dernier message: 31/08/2007, 08h55
  2. Problème d'accents avec Formulaire
    Par MicaelFelix dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/05/2007, 20h39
  3. Problème d'accent avec formulaire cgi
    Par vodevil dans le forum Web
    Réponses: 3
    Dernier message: 15/04/2006, 11h48
  4. problème d'accents dans le formulaire de contact
    Par Rocket666 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2006, 14h38
  5. problème d'accents dans le formulaire de contact
    Par Rocket666 dans le forum Langage
    Réponses: 2
    Dernier message: 04/02/2006, 14h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo