Upload de fichier (condition sur la vérification...)

Eléphant du PHP | 169 Messages

31 mai 2007, 09:45

Slt tous le monde !
je suis entraint d'utiliser le tuto de "phpfrance" sur l'upload de fichier.
dans l'exemple qu'il donne, tout ce passe sur la même page. (formulaire et code qui permet d'uploder le fichier)

moi, je suis obligé de le faire sur deux fichier different.
Un fichier qui contient le form
Un fichier qui contiendras le code qui vas permettre l'upload apres vérification des conditions.

le probléme que je rencontre est au niveau des conditions
// vérifications
		if( !in_array( substr(strrchr($_FILES['fichier_PDF']['name'], '.'), 1), $extensions_ok ) )
			{
			$erreur = 'Seul les fichiers au <strong>format PDF<strong/> sont accepté, veuillez recommencer !';
			}
			
		elseif( file_exists($_FILES['fichier_PDF']['tmp_name'])and filesize($_FILES['fichier_PDF']['tmp_name']) > $taille_max)
			{
			$erreur = 'Le fichier ne doit pas dépasser <strong>4 Méga</strong>';
			}
le faite quelle ne soit pas sur la même page que le form, je n'arrive pas a faire afficher le message d'erreur sur la page de mon form.

j'avais pensé a mettre un Header du style (voir le code en gras)
// vérifications
		if( !in_array( substr(strrchr($_FILES['fichier_PDF']['name'], '.'), 1), $extensions_ok ) )
			{
			$erreur = 'Seul les fichiers au <strong>format PDF<strong/> sont accepté, veuillez recommencer !';
                        header("Location:.formulaire.php?erreur");
			}
			
		elseif( file_exists($_FILES['fichier_PDF']['tmp_name'])and filesize($_FILES['fichier_PDF']['tmp_name']) > $taille_max)
			{
			$erreur = 'Le fichier ne doit pas dépasser <strong>4 Méga</strong>';
			}
mais sa ne marche toujours pas....
pourriez vous m'aider ?

Merci a vous
--
Kweb

Eléphant du PHP | 451 Messages

31 mai 2007, 09:52

Bonjour,
Quand tu dis que ça ne marche toujours pas, peux-tu préciser ce qui se passe ?
Ton formulaire continue de s'afficher sans l'erreur ou bien il ne s'affiche pas ?

Dans la ligne header, le point avant formulaire me semble un peu louche :
header("Location:.formulaire.php?erreur"); 
ne serais-ce pas plutôt :
header("Location:formulaire.php?erreur"); 
ou
header("Location:./formulaire.php?erreur"); 
Si header fonctionne, il n'y a pas de raison pour que tu ne puisse pas récupérer l'erreur dans $_GET["erreur"]
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 169 Messages

31 mai 2007, 10:03

Effectivement, j'ai fais une erreur de frappe en inserant le ".".

par contre lorsque je test il me redirige bien sur le formulaire mais il ne me mets aucun message

voici le code que j'ai sur la page du form, pour afficher l'erreur
<?php 
			if(isset($erreur))
			{
			  echo '<p>'. $erreur .'</p>';
			}
		?>
--
Kweb

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

31 mai 2007, 10:13

Si header fonctionne, il n'y a pas de raison pour que tu ne puisse pas récupérer l'erreur dans $_GET["erreur"]
Superglobales
Register_globals à OFF
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 169 Messages

31 mai 2007, 10:21

je suis d'accord avec toi.
je dois surement faire une erreur dans mon code

j'ai tester en écrivant sa, dans ma page du formulaire qui a donc l'url http://www......formulaire.php?erreur
<?php 
			if(isset($_GET['erreur']))
			{
			  echo $_GET['erreur'];
			}
		?>

Pourrais-tu me dire si j'ai fais une erreur dans mon code ? car rien ne s'affiche
:roll:

merci
--
Kweb

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mai 2007, 10:35

Je crois que certains navigateurs ont besoin d'une valeur (même vide) associée au paramètre, sinon ils l'ignorent pour alléger la requête. Il te faudrait donc juste rajouter un "=" :)

Essayes ceci dans ton header : formulaire.php?erreur=1
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 169 Messages

31 mai 2007, 10:38

Bizarre,

je viens de tester j'ai bien une erreur qui s'affiche, par contre il ne me mets pas le texte voulu, mais le valeur "1" (erreur=1) ?????

Faut t'il que je mette ma phrase apres le = ????
a mon avis non ? mais quand pensez vous ?
--
Kweb

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 mai 2007, 10:57

mais quand pensez vous ?
Euh..... tu veux une date précise ? ;)

Plus sérieusement, lorsque tu passes un paramètre dans l'url du type "?param=maValeur" tu vas récupérer en php la variable $_GET['param'] qui aura pour valeur "maValeur" si tu l'affiches. Donc si tu veux que sa valeur corresponde à ton message, il faut effectivement le passer dans l'url (mais c'est pas très propre...).

Le mieux dans ce cas est de tester la valeur et d'afficher un message en fonction, par exemple si erreur==1 -> fichier trop volumineux, si erreur==2 -> format incorrect, etc.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 169 Messages

31 mai 2007, 11:32

Merci de votre aide !

tout fonctionne bien
--
Kweb