Pb d'apostrophe lors de téléchargement

Signaler
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009
-
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
-
Je rage!
J'ai développé une petite GED. Je rencontre un problème auquel je n'ai pas de solution.
J'utilise un formulaire en mode POST pour télécharger le fichier. Si ce dernier a un nom contenant une apostrophe, le nom s'en retrouve tronqué quand je le récupère avec $_FILES.

Merci pour vos précieux conseils!

10 réponses

Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
salut

regarde avec les fonctions addslashes et stripslashes

leurs noms indiquent bien ce qu'elles font

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

J'ai regardé de ce côté mais je n'ai pas la main pour manipuler le nom du fichier à télécharger.
Le nom est tronqué avant même que je le récupère pour le manipuler:

Mon formulaire contient la ligne suivante:

et je récupère sur cette même page PHP le contenu de "document" de la manière suivante:

$document = basename($_FILES['document']['name']);

Si mon document ne contient pas d'apostrophe, la ligne si dessus me retourne intégralement la chaîne sinon il me la tronque sans que je puisse agir:

exemple: si je sélectionne le fichier "bureau d'études.doc", la ligne ci-dessus me retoune "études.doc"!
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
et si tu fait ça :

$document = basename(addslashes($_FILES['document']['name']));

il devrait te renvoyé ça : bureau d\'études.doc

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

Bonsoir,

Cela ne marche pas mieux. L'instruction $_FILES['document']['name'] renvoie déjà la chaîne tronquée! Addslaches ne peut rien faire de mieux.

print_r($_FILES['document']['name']) indique "études.doc".

Doit-on évoluer dans un charset autre?
Existe-il une autre instruction pour uploader des fichiers et qui pourrait corriger ce problème?
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
bon j'ai verifier moi ca fait pas ca chez moi !

montre moi ton code au debut de fichier, tu fait simplement un echo $_FILES['document']['name'];

je connais pas print_r qu'est ce que ca fait ?

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut trucsoufle,

print_r(array());

print_r c'est comme echo, mais qui en plus affiche les array

$array ('ca'> 'ce', 'b' , 3);

Renvera :

Array

(

[ca] => ce

[0] => b

[1] => 3

)

<hr size="2" width="100%">Si ma reponse te convient, merci de l'accepté !
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
oki merci jojo

ben ici, ce n'est pas trés utile en tout cas

autant faire un bon vieux echo

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Non, c'est tres utile, puisque lors de test si tu veux tester un array :

- echo => Array

- print_r => Array( ... le tableau ... )

Mais c'est vrai que rien ne vaux le bon vieux echo, print_r est a mon avis a utilisé occasionellement
<hr size="2" width="100%">Si ma reponse te convient, merci de l'accepté !
Messages postés
8
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
1 avril 2009

Voici un exemple qui ne fonctionne pas avec des noms de fichiers contenant une apostrophe:

Fichier "index.php":

<?php


$validation = $_POST[validation];


if($validation)
{ // s'il y a eu envoi de données au script ...


$uploaddir = 'documents/';
$uploadfile = $uploaddir . basename($_FILES['document']['name']);
echo '';
if (move_uploaded_file($_FILES['document']['tmp_name'], $uploadfile))
{
echo "Le fichier est valide, et a été téléchargé avec succès.\n";
}
else
{
echo "Erreur de téléchargement.\n";
}
echo 'Voici quelques informations de déboguage :';
print_r($_FILES);
echo $_FILES['document']['name'];
echo '

';
}
?>



<form name="Formulaire" method="post" enctype="multipart/form-data" action="index.php">

<tr><th>Fichier</th><td colspan="5"></td></tr>

</form>

J'ai créé un fichier texte qui se nomme "aujourd'hui.txt".
Quand te sélectionne ce fichier, le nom retenu et affiché est "hui.txt" et non "aujourd'hui.txt".

Pour info, j'utilise un serveur Apache 1.3.33 et PHP 5.03
Messages postés
1250
Date d'inscription
mardi 15 juillet 2003
Statut
Membre
Dernière intervention
30 septembre 2007
1
remplace ca :

$validation = $_POST[validation];

if($validation)


par ceci :

if(isset($_POST['validation']))

c'est beaucoup mieux !!!



par contre ton code marche bien chez moi et je n'ai pas de probleme d'apostrophe !!!

pour info, j'utilise easyphp 1.7

donc php 4.3.3 et apache 1.3.27



voila, je ne sais pas quoi te dire d'autre sinon ????

désolé

Je te donne une idée, tu me donnes une idée, nous avons chacun deux idées.
Mon site Internet