par
Devether » 14 déc. 2007, 12:59
impossible de toucher à la valeur du champ en javascript sous IE7... donc je dirais que ce n'est pas possible.

Pas glop
Ah ben un peu oui !! C'est surtout n'importe quoi si FF te permet de manipuler les données à l'intérieur de ce champ... ça veut dire qu'au moment de l'envoi du formulaire, tu pourrais regarder la valeur du champ, voir s'il s'agit un systeme windows ou unix, et modifier la valeur pour spécifier n'importe quel fichier qui se trouverait sur le disque de l'utilisateur à son insu ?
Effectivement mais c'est pourtant le cas
Le mieux c'est dans ton contrôle de données envoyées (que tu ne manques naturellement pas de faire en php

), est de vérifier avant de faire le move_upload_file() qu'il n'y a pas eu d'erreur d'upload (ou que le fichier ne fait pas 0ko, mais de mémoire y a une erreur adaptée)
Oui je savais que je pouvais faire comme ça mais je voulais évité que ce soit le serveur qui effectue le test.
Enfin bref c'est ce que j'ai fais :
- Mon formulaire de téléchargement envoi les données POST vers une iframe qui affiche la liste des fichiers uploadés.
<form name="up_form" id="up_form" target="ifra" method="post" enctype="multipart/form-data" action="upload.php">
...
<iframe id="ifra" name="ifra"></iframe>
- Dans mon script d'upload je met une variable à true si le fichier est <0 octet en empéchant sa copie dans le répertoire de destination.
if ($_FILES['myfile']['size'] > 0) {
$zerofile = false;
}
else {
$zerofile = true;
}
- J'envoi cette variable vers ma fonction de remplissage de l'iframe.
list_files($init_path, $zerofile);
- Je ne fais appel a une fonction JS qui affiche un alert('Fichier non valide!') que si cette variable est à true.
<?php
...
if ($zerofile) {
?>
<script type="text/javascript">
alert('Fichier non valide!');
</script>
<?php
}
...
?>
J'aimerais préciser que même si le $_FILE['myfile']['size'] = 0 et bien le $_FILE['myfile']['error'] = 0 aussi.
Tout ça pour dire que j'ai résolu mon problème. Merci beaucoup pour votre aide.

[quote="Ryle"][quote="Devether"][quote="Truc"]impossible de toucher à la valeur du champ en javascript sous IE7... donc je dirais que ce n'est pas possible.[/quote]
:cry: Pas glop[/quote]
Ah ben un peu oui !! C'est surtout n'importe quoi si FF te permet de manipuler les données à l'intérieur de ce champ... ça veut dire qu'au moment de l'envoi du formulaire, tu pourrais regarder la valeur du champ, voir s'il s'agit un systeme windows ou unix, et modifier la valeur pour spécifier n'importe quel fichier qui se trouverait sur le disque de l'utilisateur à son insu ? :shock: [/quote]
Effectivement mais c'est pourtant le cas :twisted:
[quote="Ryle"]Le mieux c'est dans ton contrôle de données envoyées (que tu ne manques naturellement pas de faire en php ;)), est de vérifier avant de faire le move_upload_file() qu'il n'y a pas eu d'erreur d'upload (ou que le fichier ne fait pas 0ko, mais de mémoire y a une erreur adaptée)[/quote]
Oui je savais que je pouvais faire comme ça mais je voulais évité que ce soit le serveur qui effectue le test.
Enfin bref c'est ce que j'ai fais :
- Mon formulaire de téléchargement envoi les données POST vers une iframe qui affiche la liste des fichiers uploadés.
[php]<form name="up_form" id="up_form" target="ifra" method="post" enctype="multipart/form-data" action="upload.php">
...
<iframe id="ifra" name="ifra"></iframe>[/php]
- Dans mon script d'upload je met une variable à true si le fichier est <0 octet en empéchant sa copie dans le répertoire de destination.
[php]if ($_FILES['myfile']['size'] > 0) {
$zerofile = false;
}
else {
$zerofile = true;
}[/php]
- J'envoi cette variable vers ma fonction de remplissage de l'iframe.
[php]list_files($init_path, $zerofile);[/php]
- Je ne fais appel a une fonction JS qui affiche un alert('Fichier non valide!') que si cette variable est à true.
[php]<?php
...
if ($zerofile) {
?>
<script type="text/javascript">
alert('Fichier non valide!');
</script>
<?php
}
...
?>
[/php]
J'aimerais préciser que même si le $_FILE['myfile']['size'] = 0 et bien le $_FILE['myfile']['error'] = 0 aussi.
Tout ça pour dire que j'ai résolu mon problème. Merci beaucoup pour votre aide. :wink: