Bonjour à tous,

Avant d'exposer mon problème voici la situation :

J'ai un formulaire d'upload de fichier (sur une page formulaire_envoi.php) qui comporte :
  • un champ dans lequel l'utilisateur doit indiquer le fichier à uploader,
  • un champ dans lequel il doit saisir un commentaire sur ce fichier.


L'idée est que si l'un des deux champs n'est pas rempli (ou les deux), l'envoi ne se fasse pas et l'utilisateur se voit renvoyé sur la page d'upload.

Le formulaire se présente donc de la façon suivante :

Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<form enctype="multipart/form-data" action="verification_envoi.php" method="post">
 
     <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
     <input type="file" name="fichierATraiter" />
     <textarea  name="commentaire" rows="4" cols="30" /></textarea>
 
</form>

Le formulaire fait donc appel à la page verification_envoi.php.

Au tout début de cette page figure la vérification du contenu des champs, pour savoir si ceux-ci sont bien remplis.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Contrôle du contenu des champs du formulaire
$codeErreur = '0';
 
if ( empty($_POST['commentaire']) )
{
	$codeErreur = $codeErreur . '4';
}
 
if (empty($_FILES['fichierATraiter']['name']))
{
	$codeErreur = $codeErreur . '2';
}
 
//Si on a rencontré des champs vides, le code d'erreur n'est pas 0, donc on redirige
if ($codeErreur != '0')
{
	$redirection = 'formulaire_envoi.php?codeErreur='.$codeErreur;
	header("Location: $redirection");
}
Comme vous le voyez, si un des champs est vide, la variable $codeErreur change de valeur, ce qui a pour effet de provoquer une redirection vers la page d'upload avec une adresse contenant le code d'erreur.


Je me heurte néanmoins à un problème :
  • Si seul le champ "fichierATraiter" n'est pas rempli, la redirection est effectuée (avec $codeErreur valant 02 donc tout est normal)
  • Si les 2 champs sont vides ("fichierATraiter" et "commentaire"), la redirection est effectuée (avec $codeErreur valant 042 donc tout est normal)
  • Si seul le champ "commentaire" n'est pas rempli, la redirection n'est pas effectuée !


Donc on peut envoyer un fichier sans commentaire, ce qui ne devrait pas être possible puisque quand les deux champs sont laissés vides, le script le détècte ($codeErreur valant 042).

Ma question : pourquoi lorsque seul le champ commentaire est laissé vide la redirection vers la page d'upload ne s'opère pas ?