if(ereg('[^[:space:]a-zA-Z0-9_.-]{1,}',
$HTTP_POST_FILES["submitfiles"]))
{
die ("<span class='attention'>Nom de fichier non
valide.<br><input type='button' value='Modifier'
onclick='goBack();'></span>");
}
else
{
include ("upload.php");
}
Mais ça ne fonctionne pas, je n'arrive pas à rentrer dans le if(ereg(...
:-((
Vous savez pourquoi ?
A cause du $HTTP_POST_FILES["submitfiles"] mal écrit ?
In article <45a2399e$, Olivier Miakinen <om+ wrote:
Ah ben oui, si tu as besoin de ce nom de fichier ailleurs que dans ImageMagick qui semble avoir besoin des guillemets, tu ne dois pas rajouter les guillemets trop tôt !
Oui effectivement ! Je n'ai plus modifié que le "name" car que je me suis rendu compte que le "tmp_name" était généré automatiquement et n'avait à priori pas de rapport avec le nom du fichier saisi dans le champ input... donc à priori pas de pb de ce côté-là.
J'ai réessayé les différentes solutions évoquées :
: - le fichier n'est pas resizé. - les variables passées ensuite dans l'URL PHP n'aiment pas du tout ces caractères (apostrophes...) : les noms de fichier sont tronqués après le antislash placés automatiquement devant les apostrophes...
:-((
Je crois qu'il faut vraiment faire la modification du nom de fichier..
Et si tu nous montrais un peu plus de ton script ?
Oui !
Pour ce qui est des caractères accentués, je ne peux pas te répondre sans savoir dans quel charset est stocké ton fichier PHP. Je suis en UTF-8
Alors je vais me renseigner un peu plus sur l'utilisation de PCRE en UTF-8 avant de te répondre.
Plutôt qu'un masque qui m'oblige ensuite à demander à l'utilisateur de renommer son fichier, je préfère le renommer directement :
- aucune des 2 preg_replace qui devraient remplacer les caractères accentués par leur équivalent non-accentué ne fonctionne... Je ne sais pas pourquoi.
- je peux me retrouver avec plusieurs point dans le nom de fichier exemple : .img.e.jpg Euh ça pose un problème ça ?
Merci Paul
In article <45a2399e$1@neottia.net>,
Olivier Miakinen <om+news@miakinen.net> wrote:
Ah ben oui, si tu as besoin de ce nom de fichier ailleurs que dans
ImageMagick qui semble avoir besoin des guillemets, tu ne dois pas
rajouter les guillemets trop tôt !
Oui effectivement !
Je n'ai plus modifié que le "name" car que je me suis rendu compte que
le "tmp_name" était généré automatiquement et n'avait à priori pas de
rapport avec le nom du fichier saisi dans le champ input... donc à
priori pas de pb de ce côté-là.
J'ai réessayé les différentes solutions évoquées :
:
- le fichier n'est pas resizé.
- les variables passées ensuite dans l'URL PHP n'aiment pas du tout ces
caractères (apostrophes...) : les noms de fichier sont tronqués après le
antislash placés automatiquement devant les apostrophes...
:-((
Je crois qu'il faut vraiment faire la modification du nom de fichier..
Et si tu nous montrais un peu plus de ton script ?
Oui !
Pour ce qui est des caractères accentués, je ne peux pas te répondre
sans savoir dans quel charset est stocké ton fichier PHP.
Je suis en UTF-8
Alors je vais me renseigner un peu plus sur l'utilisation de PCRE en
UTF-8 avant de te répondre.
Plutôt qu'un masque qui m'oblige ensuite à demander à l'utilisateur de
renommer son fichier, je préfère le renommer directement :
- aucune des 2 preg_replace qui devraient remplacer les caractères
accentués par leur équivalent non-accentué ne fonctionne...
Je ne sais pas pourquoi.
- je peux me retrouver avec plusieurs point dans le nom de fichier
exemple : .img.e.jpg
Euh ça pose un problème ça ?
In article <45a2399e$, Olivier Miakinen <om+ wrote:
Ah ben oui, si tu as besoin de ce nom de fichier ailleurs que dans ImageMagick qui semble avoir besoin des guillemets, tu ne dois pas rajouter les guillemets trop tôt !
Oui effectivement ! Je n'ai plus modifié que le "name" car que je me suis rendu compte que le "tmp_name" était généré automatiquement et n'avait à priori pas de rapport avec le nom du fichier saisi dans le champ input... donc à priori pas de pb de ce côté-là.
J'ai réessayé les différentes solutions évoquées :
: - le fichier n'est pas resizé. - les variables passées ensuite dans l'URL PHP n'aiment pas du tout ces caractères (apostrophes...) : les noms de fichier sont tronqués après le antislash placés automatiquement devant les apostrophes...
:-((
Je crois qu'il faut vraiment faire la modification du nom de fichier..
Et si tu nous montrais un peu plus de ton script ?
Oui !
Pour ce qui est des caractères accentués, je ne peux pas te répondre sans savoir dans quel charset est stocké ton fichier PHP. Je suis en UTF-8
Alors je vais me renseigner un peu plus sur l'utilisation de PCRE en UTF-8 avant de te répondre.
Plutôt qu'un masque qui m'oblige ensuite à demander à l'utilisateur de renommer son fichier, je préfère le renommer directement :
- aucune des 2 preg_replace qui devraient remplacer les caractères accentués par leur équivalent non-accentué ne fonctionne... Je ne sais pas pourquoi.
- je peux me retrouver avec plusieurs point dans le nom de fichier exemple : .img.e.jpg Euh ça pose un problème ça ?
Merci Paul
Olivier Miakinen
$submitfiles = $_FILES["submitfiles"];
function getRewriteString($sString) { $string = htmlentities(strtolower($sString));
Attention : htmlentities() est en Latin1 par défaut, tandis que strtolower(), par défaut, ne traite que les caractères ASCII. Aucun des deux ne peut fonctionner tel quel en UTF-8.
Là encore le charset par défaut pour html_entity_decode() est Latin1 et pas UTF-8.
$string = trim($string, "");
Euh... il n'y a pas un paramètre en trop, ou des caractères manquants dans le paramètre ? Là tu dis que tu veux supprimer des caractères en début et fin de ligne, mais en fait il n'y a aucun caractère que tu veux supprimer (puisque la liste est vide).
- aucune des 2 preg_replace qui devraient remplacer les caractères accentués par leur équivalent non-accentué ne fonctionne... Je ne sais pas pourquoi.
Tu es sûr que ce sont les preg_replace() qui ne fonctionnent pas ? Ce ne seraient pas plutôt strtolower(), htmlentities(), html_entity_decode() et trim() ?
- je peux me retrouver avec plusieurs point dans le nom de fichier exemple : .img.e.jpg Euh ça pose un problème ça ?
Si tu n'es pas en MS-DOS avec le format « 8 caractères + point + 3 caractères », ça ne devrait pas poser de problème. ;-)
$submitfiles = $_FILES["submitfiles"];
function getRewriteString($sString) {
$string = htmlentities(strtolower($sString));
Attention : htmlentities() est en Latin1 par défaut, tandis que
strtolower(), par défaut, ne traite que les caractères ASCII.
Aucun des deux ne peut fonctionner tel quel en UTF-8.
Là encore le charset par défaut pour html_entity_decode() est Latin1 et
pas UTF-8.
$string = trim($string, "");
Euh... il n'y a pas un paramètre en trop, ou des caractères manquants
dans le paramètre ? Là tu dis que tu veux supprimer des caractères en
début et fin de ligne, mais en fait il n'y a aucun caractère que tu veux
supprimer (puisque la liste est vide).
- aucune des 2 preg_replace qui devraient remplacer les caractères
accentués par leur équivalent non-accentué ne fonctionne...
Je ne sais pas pourquoi.
Tu es sûr que ce sont les preg_replace() qui ne fonctionnent pas ? Ce ne
seraient pas plutôt strtolower(), htmlentities(), html_entity_decode()
et trim() ?
- je peux me retrouver avec plusieurs point dans le nom de fichier
exemple : .img.e.jpg
Euh ça pose un problème ça ?
Si tu n'es pas en MS-DOS avec le format « 8 caractères + point + 3
caractères », ça ne devrait pas poser de problème. ;-)
function getRewriteString($sString) { $string = htmlentities(strtolower($sString));
Attention : htmlentities() est en Latin1 par défaut, tandis que strtolower(), par défaut, ne traite que les caractères ASCII. Aucun des deux ne peut fonctionner tel quel en UTF-8.
Là encore le charset par défaut pour html_entity_decode() est Latin1 et pas UTF-8.
$string = trim($string, "");
Euh... il n'y a pas un paramètre en trop, ou des caractères manquants dans le paramètre ? Là tu dis que tu veux supprimer des caractères en début et fin de ligne, mais en fait il n'y a aucun caractère que tu veux supprimer (puisque la liste est vide).
- aucune des 2 preg_replace qui devraient remplacer les caractères accentués par leur équivalent non-accentué ne fonctionne... Je ne sais pas pourquoi.
Tu es sûr que ce sont les preg_replace() qui ne fonctionnent pas ? Ce ne seraient pas plutôt strtolower(), htmlentities(), html_entity_decode() et trim() ?
- je peux me retrouver avec plusieurs point dans le nom de fichier exemple : .img.e.jpg Euh ça pose un problème ça ?
Si tu n'es pas en MS-DOS avec le format « 8 caractères + point + 3 caractères », ça ne devrait pas poser de problème. ;-)
paul
In article <45a36c41$, Olivier Miakinen <om+ wrote:
$submitfiles = $_FILES["submitfiles"];
function getRewriteString($sString) { $string = htmlentities(strtolower($sString));
Attention : htmlentities() est en Latin1 par défaut, tandis que strtolower(), par défaut, ne traite que les caractères ASCII. Aucun des deux ne peut fonctionner tel quel en UTF-8.
Pourtant toutes mes caps sont changées en minuscules...
Rigolo. Je n'y aurais pas pensé ! Oui mais ça ne fonctionne pas chez moi
:-(
//$string = preg_replace("/&(.)(acute|cedil|circ|ring|tilde|uml);/", "$1", $string); Celle-ci non plus...
Ces 2 preg_replace liées aux caractères accentués ne fonctionnent pas... Pourquoi ? Comme faire fonctionner ça ?
Et en fait les éèà et autres seront remplacés par un . par la preg_replace suivante :
$string = preg_replace("/([^a-z0-9]+)/", ".", Celle-ci fonctionne bien donc
html_entity_decode($string)); Là encore le charset par défaut pour html_entity_decode() est Latin1 et
pas UTF-8.
$string = trim($string, ""); Euh... il n'y a pas un paramètre en trop, ou des caractères manquants
dans le paramètre ? L tu dis que tu veux supprimer des caractères en début et fin de ligne, mais en fait il n'y a aucun caractère que tu veux supprimer (puisque la liste est vide).
Si je comprends bien ce qui est dit là <http://fr2.php.net/manual/fr/function.trim.php> trim() retourne la chane str, après avoir supprimé les caractères invisibles en début et fin de chane. Si le second paramètre charlist est omis, trim() supprimera les caractères suivants : " " (ASCII 32 (0x20)), un espace ordinaire. "t" (ASCII 9 (0x09)), une tabulation. "n" (ASCII 10 (0x0A)), une nouvelle ligne (line feed). "r" (ASCII 13 (0x0D)), un retour chariot (carriage return). "