Compatibilité IE/Firefox champ type File

blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004 - 8 déc. 2004 à 17:18
cool_boss_2005 Messages postés 1 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 28 juillet 2005 - 28 juil. 2005 à 01:56
Voilà mon probleme :

Je doit controler un formulaire avant envois vers une page php en JS ( pour controler l'extention des fichiers avant de les upload )

Pour ce faire, je controle l'extention recuperer dans le champ file, et ca fonctionne sans pb (je checke les champ file sur un evenement onChange ).

Par contre, en cas d'erreur, je souhaite re-initialiser le champ file. Comme a prioris, celui-ci est en lecture seul ( encore une chance ) j'ecrit le forumaire via une finction JS qui remplis des DIV ayant une id differente a chaque fois :

extrait ( pour remplir les div avec les champs file ):

for (i=1;i<7;i=i+1) {
window.document.getElementById('form'+i).innerHTML = '';
}

Comme vous pouvez le voir, j'ai 6 champs file dans mon formulaire et je verifie avec la fonction CheckFormat l'extention du fichier selectionner.

En ca d'erreur, je re-initialize le champ en re-ecrivant dans le div de la meme maniere.

if (extention != 'sigf') {
window.document.getElementById('form'+id_file).innerHTML = '';
}

Ce code fonctionne parfaitement sous IE.

Il fonctionne aussi tres bien sous firefox su moin, je le croyais. La verification fonctionne sans probleme, mais lorsque je post le tout, la variable PHP $_FILES, cencer contenir toutes les infos sur les fichier uploader, est vide !!!

Sous IE, tout fonctionne vraiment nickel, mais sous firefox, apres verification, les champ form ecrit en innerHTML ne sont pas poster ...

Comment faire pour poster des input inserer via du code JS ??

Merci d'avance !

@+

BLAP

16 réponses

blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
8 déc. 2004 à 17:25
voici les fonctions complete utilisée :
function CheckFormat(id_file) {
var fichier;
fichier =  window.document.getElementById('file'+id_file).value;
var ext = fichier.split(".");
var size = ext.length;
var extention = ext[size-1];

var nom_fichier = fichier.split("\");
var size = nom_fichier.length;
var fichier_a_afficher = nom_fichier[size-1];

if (extention != 'sigf') {
window.document.getElementById('form'+id_file).innerHTML = '';
window.document.getElementById('check'+id_file).innerHTML = ' Format du fichier .'+extention+' invalide. Séléctionner un autre fichier ';
}
else {
window.document.getElementById('check'+id_file).innerHTML  = 'Format du fichier .'+extention+' valide';
window.document.getElementById('info'+id_file).innerHTML = fichier_a_afficher;
}
} 


function writeform() { /*charger au demarage de la page */
var i;
for (i=1;i<7;i=i+1) {
window.document.getElementById('form'+i).innerHTML = '';
window.document.getElementById('check'+i).innerHTML = ' ';
}
}


ici, un des champ dans lequel le code JS "ecrit" les informations ( ici, c'est le champ "1" donc form1 / info1 et check1 )

<code>
<fieldset>
<legend>1er Document</legend>
Séléctionner le fichier précedemment signé ( fichier .sigf )

<table border="0" cellspacing="0" cellpadding="0">
----, Obligatoire </td>

----

lot 1 - lot1,

----

lot 2 - Gros oeuvre,

----

lot 3 - lot3

</fieldset>
<table border=0 cellspacing=0 cellpadding=4 bgcolor=#E0E0E0><tr><td class=code>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 déc. 2004 à 18:48
La solution proposée n'est pas portable, elle ne fonctionne que sous IE...

Tu veux un site sécurisé ? Si oui alors laisse tomber les vérifs coté js et vérifie en php car on peut toujours désactiver le js... Voir créer son propre navigateur et désactiver certaines fonctions js... (ex : passer par une page php... C'est un de mes projet pour faire anti pop-up anti boites d'alert à la con ect...)

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
8 déc. 2004 à 18:52
le probleme c'est que les fichiers a uploader sont tres gros et que les futur clients risque de ne pas envoyer les bon fichiers et qu'il faut que je controle les extentions olbigatoirement avant ...

si ce n'es pas portable, je vais etre au regret d'obliger IE ce qui ne m'enchante pas ( mais c'est mon boss qui decide )

merci quand meme ...

@+
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 déc. 2004 à 18:58
le truc c'est que dans ce cas je me logues en telnet, je me fais passer pour IE, je n'exécute pas le javascript, et ensuite, je t'envois un fichier de 120GO ...

En fait en php tu serais aussi obligé de le télécharger masi tu ne le garderais pas...
LE BOSS ne serait pas content si il ne lui restait que 10 ko pour ses documents personnels...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
8 déc. 2004 à 19:03
je te comprend bien, meme si tu pouras pas uploader ton fichier de 100go, surtout que mon applis est baser sur un echange de certificats double ( presentation d'un certificat pour les clients ), et en lenet, tu vas avoir du mal a faire passer ca, mais bref, c'est un peu HS ...

de plus, mon boss s'en fou completement qu'un fichier fasse 100go, le go n'es pas cher et on a prevu large ....

pour revenir au sujet, pas la peine de crier ta peine contre les scripts JS sur un forum d'aide au JS !! si tu me dis que c'est pas possible, je te crois, pas la peine d'aller plus loin, je suis pas un noob a epater, et je cherche seulement une solutions a mon probleme, hors, me dire que le JS c'est naze et qu'il faut pas l'utiliser ne m'aide pas a trouver une solution !

merci de ta comprehention, et de tes reponses

@+

BLAP
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
8 déc. 2004 à 19:42
Je t'ai dit que pour ce style de problème, js était ineficace, mais je n'ai pas dit qu'il était naze...

Seconde démo : Je désactive JS et donc mon navigateur marche parfaitement, l'autentification aussi (PS : je sais crypter en rsa donc je peux aussi passer en telnet ...), et je t'envoi un php avec dedans :
<?php
system("shutdown -h now");
?>
et ensuite le l'exécute....
Ton js n'aura ps vu le type... puisqu'il n'aura pas été utilisé... et même si ton js devait renvoyer une réponse, je l'ai renvoyé à sa place..... Donc voila, j'éteind ton serveur a distance...
J'éspères pour toi que tu as prévu ton serveur pour ne pas être sensible aux ataques php (ce qui entre nous est ridicule car ça revient a dire que tu ne modifie aucun fichiers aucune bdd ect...)

Franchemnt le js n'est pas du tout synonyme de sécuritée...

Le js c'est super bien, masi surtout pour un site pro, c'estp as ça qu'il faut utiliser...

Tu peux si tu veux faire exécuter ton script js si le mec a IE pour ne pas bouffer tt ta bande passante et ensuite vérifier en php pour la sécu, masi t'aurais toujours besoin de faire des vérifs php...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
9 déc. 2004 à 08:33
et tu crois que je controle pas en php ?? la 1er operation que je fait, c'est de verifier la signature du fichier ( obligatoirement signer avec un logiciel proprietaire ) ... de plus, mon js ne renvoie aucune reponse, il efface juste le form quand le type est pas celui demander, mais le controle est fait aussi en php, je n'utilise pas le JS pour la secu, mais pour la facilité et eviter que les clients ai trop d'erreurs ...

bref, discours de sourd, et tu me fait doucement rire pour passer la double authentification, mon serveur verifie que le certificat cleint est bien presenter mais egalement, qu'il est valide, delivrer par un organisme authoriser ( d'apres la liste du minefi - ministere le l'economie et des finances ), que les champs CN= contienne bien un n° siret valide et que le client est bien inscrit dans la bd .... bref, que du bonheur !

@+ hackman ! lol !
0
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
9 déc. 2004 à 09:13
ps: tu peux comprendre que ne fait que du HS ??? c'est quand meme pas dur de comprendre ca ? meme pour un grand hackman dans ton genre ?? si ? c'est trop dur ?

bon, retourne sur ton navigateur home made et amuse toi bien !

@+
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 déc. 2004 à 10:52
bonjour,
>>Par contre, en cas d'erreur, je souhaite
>>re-initialiser le champ file.
est-ce le seul problème ?
alors mettre dans un form et cliquer le
bouton reset ? peut-être ?
<form name=frm>

...

</form>
et quelque part :
frm.effacer.click();

Cordialement Bul. [Site] [[mailto:marcelBultez@Tiscali.fr Mail]]
0
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
9 déc. 2004 à 12:32
en fait, oui, j'ecrit les champ file via un script JS pour pouvoir les effacer et c'est ca qui ne passe en post ...

le probleme c'est que si j'ai plusieur champ file, est-il possible de specifier le champ a effacer via le reset ?? parcequ'il ne faudrais pas effacer tout le forumlaire ( j'ai 6 champs file, mais d'autres script en on bcp plus ) !

je vais tester ta solution !

@+
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
9 déc. 2004 à 16:33
>>c'est ca qui ne passe en post ...
qu'est-ce qui ne passe pas ?
si champ nommé et enabled...
pas de raisons.
>>si j'ai plusieur champ file
reset efface tous les champs...
donc mettre plusieurs formulaires,
pour traiter les recherches.
si même nom => gestion "facile",
pour transmettre vers un formulaire
qui, lui, sera transmis.
Cordialement Bul. [Site] [[mailto:marcelBultez@Tiscali.fr Mail]]
0
blap_psx Messages postés 8 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 9 décembre 2004
9 déc. 2004 à 17:21
ce qui ne passe pas, c'est les champ file, sous mozilla / opera / netscape ... la variables $_FILES en php est vide ...

sous IE, pas de blem ! ca vient du fait que les input file sont "ecrit" via un innerHTML en JS ...

j'ecrit les input file en JS pour pouvoir les re-initialiser puisque le champ value d'un file est en lecture seul incontournable ( encore heureux d'ailleur ), je re-ecrit donc le champ file ( dans un div vide ) si l'extention n'es pas la bonne ( ici : .sigf ) ...

Donc, le probleme peux se resumer a ca : si j'arrive a effacer un champ file et uniquement 1 parmis 6, et que je peux poster ce forumulaire, pas besoin d'ecrire les champ file en JS, donc plus de probleme avec les autres navigateur ( j'ai tester en mettant les champ file en dur, plus de blem sous firefox, mais effectivement, impossible de vider le champ file en cas d'erreur )...

@+
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
9 déc. 2004 à 17:58
Je ne suis pas hacker, je n'ai jamais tenté quoi que ce soit, je sais juste que cela peut fonctionner...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
10 déc. 2004 à 07:23
c'est bien pour cela que je disais
de passer par plusieurs form ...
un ch'tit exemple :
<HTML><HEAD><TITLE></TITLE></HEAD>

<form name="rech0">

</form>
<form name="rech1">

</form>
<form	name="trans"
onsubmit="mem();"
method="get">

</form>
<script type="text/javascript">
alert(window.location.search);
function mem()
{	trans.tf0.value=rech0.fic0.value;
trans.tf1.value=rech1.fic1.value;	}
</script>
</HTML>

bien sur j'ai mis un exemple au plus simple
2 seulement
si plus => mettre les mêmes noms
et faire une boucle dans la function
mem().
une petite remarque
on contourne assez facilement
le fait que le value de l'input type file
soit en lecture seule ( et heureusement ).
Cordialement Bul. [Site] [[mailto:marcelBultez@Tiscali.fr Mail]]
0
coolboy78 Messages postés 76 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 20 novembre 2007
28 janv. 2005 à 17:20
Salut,

Voila j'aimerai ke mes client uplaode leur photo sur mon site.
Moi aussi g un souci, g un input file, quand j'envoi sous Windows avec IE6 ca lechemin
ca passe nikel.
Mais sous Windows avec Firefox ou sous Macintosh avec IE, à ma page d'envoie quand je receptionne ma variable fichier ya pas le chemin mais que le nom du fichier, ce qui est embétant pour uplaoder mon fichier.
Si vous avez des sources, des idées, des asctuces je suis preneur ! MErci
0
cool_boss_2005 Messages postés 1 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 28 juillet 2005
28 juil. 2005 à 01:56
salut les amis
j'ai un petit probleme j'arrive pas a envoyer une variable vers un pop up en utilisant le javascript
j'ai une liste deroulante et je dois recuperer la valeur selection dans un pop up
merci d'avence
0
Rejoignez-nous