IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Nombre de champs transmis par la méthode POST [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Nombre de champs transmis par la méthode POST
    Bonjour,
    je suis actuellement bloqué dans un script PHP à propos de la création d'un formulaire.
    Ce dernier contient plusieurs milliers de champs, mais seul une parti d'entre eux sont effectivement transmis (methode POST). Selon les test c'est les 800 à 1000 premiers champs qui sont transmis, le reste non, et pas d'erreur en particulier.
    J'utilise wampserver et j'ai pu modifier le php.ini pour augmenter la taille du max post data, du memory limit et du upload max filesize.

    Je n'ai pas non plus de :
    suhosin.post.max_vars = 200
    suhosin.request.max_vars = 200
    ou de module suhosin activé.

    Si quelqu'un a une idée, je suis preneur.
    En vous remerciant d'avance.

  2. #2
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je viens de voir la catégorie Formulaire, si un modérateur pouvait déplacer mon post, merci.

    Sinon j'ai regardé les erreurs apaches, j'ai :
    [Sun Nov 18 01:35:25 2012] [error] [client 127.0.0.1] PHP Warning: POST Content-Length of 14049360 bytes exceeds the limit of 8388608 bytes in Unknown on line 0, referer: http://localhost/phpmyadmin/tbl_impo...b1a4ed8fa9d465
    Mais c'était il y'a 2 jours avant que je n'augmente ces limitations (à 700Mo + )

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 381
    Points : 10 410
    Points
    10 410
    Par défaut
    D'un autre côté un formulaire avec plusieurs milliers de champs... es-tu certain que tu ne pourrais pas organiser ton code autrement ?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je serai interessé par la réponse à cette question : que peut bien suivre un formulaire de plusieurs milliers de champs ?
    Tu coches des grains de riz un par un dans une conserve ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    D'un autre côté un formulaire avec plusieurs milliers de champs... es-tu certain que tu ne pourrais pas organiser ton code autrement ?
    Probablement, et c'est ce que j'espère faire à terme mais je suis intéressé par la raison pour laquelle le résultat du formulaire se limite à un moment donné...

    Pour faire simple j'ai une liste de plusieurs milliers de valeurs que je dois vérifier à la main dans un premier temps. Le formulaire est auto-remplie par la valeur théorique mais nécessite une vérification manuelle dans un premier temps car il n'est pas possible d'envisager tous les cas d'erreurs sans y être confronté au moins 1 fois dans la pratique.

    Je pourrais couper le nombre de champs à 500 par exemple, mais là je suis curieux de savoir pourquoi le formulaire est limité comme ça alors que j'ai fait sauté les limitations...
    Si vous avez une idée... Sinon c'est la méthode pour "esquiver" le problème

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Ca doit être frustrant, après avoir passé 3 jours et 3 nuits à remplir ton formulaire, de se rendre compte qu'on ne peut pas le valider !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Il existe des limites physiques au volume de données que tu peux passer à un script en fonction de l'environnement, regarde ici

  8. #8
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Ca doit être frustrant, après avoir passé 3 jours et 3 nuits à remplir ton formulaire, de se rendre compte qu'on ne peut pas le valider !
    Heureusement ce n'est pas ça ! ^^
    J'ai une liste que je dois modifier : je génère donc une page avec cette liste et à côté la nouvelle liste avec les résultats théoriques pré-rentrées mais je veux que ce soit un champ car j'ai éventuellement besoin de le modifier.
    Je vous rassure je n'ai pas remplie 2000 cases et valider pour me dire que ça ne marcherait pas, j'ai essayé au départ pour voir si tout passait bien :p

    @rawsrc : j'ai déjà pris en compte ces limitations et en toute logique si les limitations étaient trop faibles le $_POST devrait être vide, hors ce n'est pas le cas, il est juste incomplet !

    Par rapport à ces limitations :
    post_max_size doit être + grand que upload_max_filesize
    De façon générale, memory_limit doit être plus grand que post_max_size.

    En valeur dans mon php.ini j'ai :
    post_max_size 1536M
    memory_limit -1
    upload_max_filesize 768M

    Les limitations rentrent à priori dans les limitations du 32 bits (voir "Note" dans le lien plus haut). Un entier signé sur 32 bits a une valeur maximale (absolue) de 2 milliards environ. Soit 2 000 000 000 d'octets donc 2000Mo et je suis en dessous.

    Edit : je suis sous Seven 64 bits mais le wamp est en version 32bits (le 64 buggait :p)

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Quelle version de PHP ?

  10. #10
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Celle fournie avec wampserver, 5.4.3
    sql 5.1.41
    apache 2.2.22

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ok à partir de PHP 5.3.9 il y a une nouvelle directive de configuration : max_input_vars (je pense que ça devrait résoudre ton problème)

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 381
    Points : 10 410
    Points
    10 410
    Par défaut
    Il y a aussi la directive TimeOut mais si tu es en local cela ne devrait pas être un pb.

    Enfin bon sur le principe, et surtout si tu dois travailler à terme sur un serveur distant, plusieurs milliers de champs à vérifier pour un seul formulaire c'est quand même pas une bonne méthode. Imagine un pb de connexion, coupure d'électricité ou autre, et tu devras tout refaire ? Vaut mieux répartir les risques et quelques centaines de champs me semble le maximum raisonnable.

  13. #13
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Ok à partir de PHP 5.3.9 il y a une nouvelle directive de configuration : max_input_vars (je pense que ça devrait résoudre ton problème)
    Alors je devrais trouver max_input_vars dans mon php.ini mais je ne le trouve pas. Pas d'autres php.ini dans le chemin de mon wampserver.

    Concernant le E_WARNING qui est généré dans ce cas, il est marqué qu'il n'arrête pas le script mais est affiché par défaut (c'est à dire où ?).

    @ARCIWEB : mon code n'a pas vocation à tourner sur un serveur distant. Je pense ne pas avoir besoin de la directive TimeOut; mes codes tournent plusieurs heures avec un set time limit.
    Je vais quand même le couper pour ne pas perdre d'éventuelles modifications sur le formulaire.

    Ceci étant dit j'aimerais savoir comment transmettre autant d'info par le POST, juste pour mieux comprendre.

  14. #14
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je me réponds à moi même, à ma question bête.

    Alors je devrais trouver max_input_vars dans mon php.ini mais je ne le trouve pas. Pas d'autres php.ini dans le chemin de mon wampserver.
    Il suffit de rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    max_input_vars = 100000 (ou plus selon les besoins !)
    Et ça marche, Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer un tableau par la méthode POST
    Par bourbita.thameur dans le forum Langage
    Réponses: 6
    Dernier message: 28/04/2009, 11h33
  2. [PayPal] Passage d'informaiton par la méthode POST
    Par Akim13 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/04/2008, 20h23
  3. [AJAX] Comment envoyer un fichier par la méthode post à l'aide d'ajax?
    Par othmane126 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/03/2008, 12h00
  4. Transfert de fichiers par la méthode POST
    Par febac20 dans le forum Langage
    Réponses: 1
    Dernier message: 03/10/2007, 21h53
  5. Réponses: 3
    Dernier message: 04/07/2007, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo