Page 1 sur 1

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

Posté : 31 mai 2007, 09:45
par kweb
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

Posté : 31 mai 2007, 09:52
par jpaul
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"]

Posté : 31 mai 2007, 10:03
par kweb
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>';
			}
		?>

Posté : 31 mai 2007, 10:13
par mere-teresa
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

Posté : 31 mai 2007, 10:21
par kweb
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

Posté : 31 mai 2007, 10:35
par Ryle
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

Posté : 31 mai 2007, 10:38
par kweb
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 ?

Posté : 31 mai 2007, 10:57
par Ryle
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.

Posté : 31 mai 2007, 11:32
par kweb
Merci de votre aide !

tout fonctionne bien