8792 sujets

Développement web côté serveur, CMS

Salut,

Mon formulaire d'upload réalisé, compris, sécurisé et tout le tremblement, il ne me reste qu'un détail à gérer, c'est le cas ou le fichier envoyé est trop volumineux.

Quand le fichier est plus gros que upload_max_filesize, pas de bile puisque on récupère l'info par $_FILE[**]['error'], mais si il dépasse également post_max_size, on ne récupère rien dans POST, ni dans FILE.

Comme je souhaite malgré tout afficher un message d'erreur si le fichier a trop d'embonpoint, je voulais savoir si il n'y aurait pas une astuce pour vérifier qu'un formulaire à été soumis auparavant, même si $_POST est vide.


J'avais pensé à testé la présence et la valeur de Content-Lentght avec apache_request_headers, mais je ne suis pas certain de la fiabilité de la chose.

Des idées??Merci d'avance

A+
Modifié par coccimaster (10 Nov 2006 - 17:11)
Plutot hard ce vendredi...tout autre jour, au lieu de faire des recherche Google un peu débile,j'aurais commencé par lire le manuel
a écrit :
Dans le cas où la taille des données reçues par la méthode POST est plus grande que post_max_size , les superglobales $_POST et $_FILES seront vides. Ceci peut être surveillé de différentes façons, e.g. en passant une variable $_GET au script qui traite les données, i.e. <form action="edit.php?processed=1"> , et ainsi vérifier si $_GET['processed'] est défini.

En espérant que ça pourra servir à quelqu'un d'autre...
Tu veux vérifier qu'un formualire , même vide a été soumis, c'est ça ?
Ah bah t'a répondu.

Sinon, il y a if(!empty($_POST)) qui renvoie TRUE si le form a été soumis
Modifié par Bison (10 Nov 2006 - 17:15)
Bison a écrit :
Sinon, il y a if(!empty($_POST)) qui renvoie TRUE si le form a été soumis


Pas dans le cas présent, pour preuve:
a écrit :
Dans le cas où la taille des données reçues par la méthode POST est plus grande que post_max_size , les superglobales $_POST et $_FILES seront vides.


Tu parle surement du cas ou on soumet un formulaire sans champ, avec un submit sans name?? Quel est l'interet?

EDIT: aprés test, ce cas ne marche d'ailleurs pas, il faut au moins un name au submit pour que le !empty renvoi true, mais $_POST contient bien des données...
Modifié par coccimaster (10 Nov 2006 - 17:22)
Un tableau vide ne veut pas dire un tableau qui n'existe pas.

Ta portefeuille... même vide... existe, non ? Smiley langue Smiley biggrin

Montres-moi le code que tu as testé avec !empty()
Modifié par Bison (10 Nov 2006 - 17:32)
Yep, mais !empty rend true si le tableau existe et contient au moins un élément. Donc si POST est vide, comme le dit la doc; ça marche pas. Un isset ne fait pas l'affaire non plus, vu que la superglobale $_POST existe toujours. M'enfin c'est pas grave, ça marche et j'ai encore des cheveux, c'est tous ce qui compte
Le simplissime code:

<form method="post" action="<?$_SERVER['PHP_SELF']?>">
    <input type="submit" name="upload"  />
</form>

<?
var_dump($_POST);echo'<br />';
if (!empty($_POST))
	echo '<br/>sousmis<br/>';
else
	echo '<br/>insoumis<br/>';


Les test:

1-Charger la page sans POST : //insoumis et var_dump : array(0) { }

2-Soumettre le formulaire : //soumis et var_dump : array(1) { ["upload"]=> string(7) "Envoyer" }

3-Soumettre le formulaire en retirant l'attribut name: //insoumis et var_dump : var_dump : array(0) { }

A+
Ah bah oui sans name !!!!
Une variable GET ou un champ hidden
Modifié par Bison (10 Nov 2006 - 17:50)