Récupérer chemin fichier local avec firefox
Fermé
flashy38
Messages postés
8
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
9 janvier 2008
-
7 juin 2007 à 23:01
polo - 2 sept. 2008 à 17:53
polo - 2 sept. 2008 à 17:53
A voir également:
- Récupérer chemin fichier local avec firefox
- Fichier rar - Guide
- Fichier host - Guide
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Recuperer video youtube - Guide
- Fichier iso - Guide
2 réponses
gryzzly
Messages postés
4607
Date d'inscription
lundi 7 novembre 2005
Statut
Contributeur
Dernière intervention
24 octobre 2020
1 323
7 juin 2007 à 23:22
7 juin 2007 à 23:22
je ne pense pas que ca vienne du navigateur, CAR :
c'est du php = interprété par le serveur...
c'est du php = interprété par le serveur...
bladeboxe
Messages postés
8
Date d'inscription
dimanche 8 janvier 2006
Statut
Membre
Dernière intervention
30 juin 2010
22
5 janv. 2008 à 16:55
5 janv. 2008 à 16:55
Bonjour,
Cela me fait exactement la même chose que Flashy 38.
Et bien que je soit en parti d'accord avec Gryzzly je ne peux m'empêché de me me demander pourquoi est ce qu'avec ce même code j'ai autant d'ennui sur firefox2 et pas un souci avec IE7 .
Si un bon saint maritain pouvait me donner la réponse cela m'aiderai grandement.
bladeboxe
Cela me fait exactement la même chose que Flashy 38.
Et bien que je soit en parti d'accord avec Gryzzly je ne peux m'empêché de me me demander pourquoi est ce qu'avec ce même code j'ai autant d'ennui sur firefox2 et pas un souci avec IE7 .
Si un bon saint maritain pouvait me donner la réponse cela m'aiderai grandement.
bladeboxe
Bonjour, c'est peut-être un peu tard, mais bon, si mes remarques peuvent aider...
J'ai effectivement constaté le même phénomène sans trouver une explication. Heureusement, dans mon cas, je ne m'intéresse qu'au fichier (pour détecter des doublons de fichiers "uploadé", et je m'en sors avec trois cas de figures (mais je n'ai pas tout testé...)
En plus, j'ai constaté que Firefox réagit autrement sous Windows que sous Linux (j'ai les deux OS)
Sous IE7/Windows, j'ai Firefox 3 (mais selon vos expériences, c'était déjà vrai pour Firefox 2), la chaîne retournée tronque le chemin pour ne renvoyer que le nom du fichier. Et la remarque de Grizzly ("je ne pense pas que ca vienne du navigateur, CAR : c'est du php = interprété par le serveur...") me semble pas tout à fait correcte, car si PHP est interprété coté serveur - vrai -, il ne fait que renvoyer ce qu'on lui "soumet", et c'est, par induction, bel et bien un chemin tronqué coté client...
Par contre, sous Linux (Ubuntu), OS à ne pas négliger - sauf si vous connaissez vos visiteurs et leurs équipements - Firefox 2 renvoie correctement le chemin mais avec des antislashes (bien entendu), ce qui fait que j'ai dû prévoir des variables concernant le navigateur et l'OS, les deux à récupérer via ($nav = ) getenv("HTTP_USER_AGENT"),
Voici comment...
$fichier = $_GET['f'];
(le $_GET, et non le $_POST, est utilisé pour faire de l'AJAX, détecter le doublon et avertir l'internaute AVANT soumission du formulaire)
1) Windows XP, IE (et pareil pour Safari)
//on retourne le nom (avec chemin) du fichier
$fichier_rev = strrev($fichier);
//on cherhce le slash (j'ai dû en mettre deux pour échapper le premier... !)
$fin_fichier = strpos($fichier_rev,'\\');
//on prend le string jusqu'au premier slash
$fichier_rev2 = substr($fichier_rev,0,$fin_fichier);
//on le retourne à nouveau
$fichier_fin = strrev($fichier_rev2);
2) Windows XP, Firefox = utilisation directe du renvoi
if(strchr($nav,"Firefox")!="" && $os=="Windows"){
$fichier_fin = $fichier;
}
3) Sous Linux (Ubuntu), Firefox
if(strchr($nav,"Firefox")!="" && $os=="Linux"){
$fichier_rev = strrev($fichier);
//on cherche l'anti-slash
$fin_fichier = strpos($fichier_rev,'/');
//on prend le string jusqu'au premier anti_slash
$fichier_rev2 = substr($fichier_rev,0,$fin_fichier);
//on le retourne à nouveau
$fichier_fin = strrev($fichier_rev2);
}
Voilà, si cela peut être utile...
Et je n'ai pas encore fait des test sur tous les OS possibles, ni tous les navigateurs
Polo
J'ai effectivement constaté le même phénomène sans trouver une explication. Heureusement, dans mon cas, je ne m'intéresse qu'au fichier (pour détecter des doublons de fichiers "uploadé", et je m'en sors avec trois cas de figures (mais je n'ai pas tout testé...)
En plus, j'ai constaté que Firefox réagit autrement sous Windows que sous Linux (j'ai les deux OS)
Sous IE7/Windows, j'ai Firefox 3 (mais selon vos expériences, c'était déjà vrai pour Firefox 2), la chaîne retournée tronque le chemin pour ne renvoyer que le nom du fichier. Et la remarque de Grizzly ("je ne pense pas que ca vienne du navigateur, CAR : c'est du php = interprété par le serveur...") me semble pas tout à fait correcte, car si PHP est interprété coté serveur - vrai -, il ne fait que renvoyer ce qu'on lui "soumet", et c'est, par induction, bel et bien un chemin tronqué coté client...
Par contre, sous Linux (Ubuntu), OS à ne pas négliger - sauf si vous connaissez vos visiteurs et leurs équipements - Firefox 2 renvoie correctement le chemin mais avec des antislashes (bien entendu), ce qui fait que j'ai dû prévoir des variables concernant le navigateur et l'OS, les deux à récupérer via ($nav = ) getenv("HTTP_USER_AGENT"),
Voici comment...
$fichier = $_GET['f'];
(le $_GET, et non le $_POST, est utilisé pour faire de l'AJAX, détecter le doublon et avertir l'internaute AVANT soumission du formulaire)
1) Windows XP, IE (et pareil pour Safari)
//on retourne le nom (avec chemin) du fichier
$fichier_rev = strrev($fichier);
//on cherhce le slash (j'ai dû en mettre deux pour échapper le premier... !)
$fin_fichier = strpos($fichier_rev,'\\');
//on prend le string jusqu'au premier slash
$fichier_rev2 = substr($fichier_rev,0,$fin_fichier);
//on le retourne à nouveau
$fichier_fin = strrev($fichier_rev2);
2) Windows XP, Firefox = utilisation directe du renvoi
if(strchr($nav,"Firefox")!="" && $os=="Windows"){
$fichier_fin = $fichier;
}
3) Sous Linux (Ubuntu), Firefox
if(strchr($nav,"Firefox")!="" && $os=="Linux"){
$fichier_rev = strrev($fichier);
//on cherche l'anti-slash
$fin_fichier = strpos($fichier_rev,'/');
//on prend le string jusqu'au premier anti_slash
$fichier_rev2 = substr($fichier_rev,0,$fin_fichier);
//on le retourne à nouveau
$fichier_fin = strrev($fichier_rev2);
}
Voilà, si cela peut être utile...
Et je n'ai pas encore fait des test sur tous les OS possibles, ni tous les navigateurs
Polo