Problème de formulaire PHP (POST)

Résolu
Bonjour,

J'ai un problème qui me donne des migraines depuis quelques temps.

J'ai mes formulaire qui ne renvoies plus rien.

C'est à dire que d'un coup un formulaire qui fonctionnait bien ne fonctionne plus du tout.

Pour être sur j'ai crée une page simple :
<form action="test.php" method="post">
<input name="txt" type="text">
<input name="" type="submit" value="Envoyer">
</form><br>
<?php print_r($_POST); ?>


Ce qui me renvoi un Array vide.

Les logs d'apache et de php ne me renvoi rien de bizzard.

Donc je coince.

Merci d'avance

38 réponses

Résumé de la discussion

Le problème porte sur un formulaire HTML dont l'envoi en POST ne renvoie plus aucune donnée, $_POST restant vide malgré une page de test simple et l'affichage du contenu, ce qui bloque le traitement côté serveur. Des réponses indiquent que les $_GET fonctionnent tandis que $_POST reste bloqué; les causes possibles évoquées incluent une configuration serveur, un blocage du POST via htaccess, ou des problèmes liés à NTLM. Des pistes pratiques suggèrent d'envoyer une variable sans formulaire via un lien pour vérifier le POST et d'examiner la configuration du serveur, notamment NTLM ou des règles de sécurité qui bloquent les données.

Bobot (l’IA à votre service)
  1. Et pour finir tout marche même le NTLM.

    J'ai lu que ce problème ne concerne que le répertoire ou ce situe le ntlm
    donc j'ai diviser mon site avec :

    Les fichiers à la racine et un répertoire ntlm (oui j'ai pas beaucoup d'imagination dans les noms) dans lequel j'ai placer mon fichier ntlm.php et identification.php

    Donc en résumant :
    - un test sur une variable de session dans conf.php montre que l'on est pas authentifier.
    Le script redirige vers ntml/identification.php
    - ntml/identification.php charge ntml/ntlm.php verifie si l'utilisateur existe en bdd puis renvoi vers ../index.php (à la racine)

    Et la les POST continue de fonctionner et le NTML a bien marché.

    Merci à tous pour vos conseils et en particulier à Neliel.
    En espérant que cela serve à d'autre personne.
    0
    1. Bonjour,

      ca marche chez moi sans aucune problème

      essaye ça :
      <form action="test.php" method="post">
      <input name="txt" type="text">
      <input type="submit" value="Envoyer">
      </form>

      test.php :
      <?php
      if(isset($_POST['txt']))
      {
      $text = $_POST['txt'];
      echo $text;
      }

      ?>
      0
      1. Contributeur
        Tu viens un peu en retard... il a résolu son problème.
        Chez lui cela ne fonctionnait pas à cause de NTLM...
        0
    2. Et voila c'est résolue c'était bien le NTLM qui faisait planter les $_POST.

      Maintenant j'ai plus qu'a trouver une alternative à ça.

      Merci beaucoup à tous.
      0
      1. Le mystère ce facilite, donc je m'explique :
        1) Je ferme tout le navigateur.
        2) J'ouvre le navigateur.
        3) Je vais sur http://localhost/test.php -> il fonctionne
        4) Je vais sur http://localhost/index.php
        5) Suite à cela plus aucun $_POST ne fonctionne.

        Donc le problème vient de index.php ou d'un des fichiers ajouter.
        Sachant que n'étant pas identifier conf.php (lui meme inclue dans index.php) renvoi vers ident.php
        ident.php charge ntml.php pour pouvoir effectuer un activation automatique par windows puis si identifier renvoi vers index.php

        Je vous dis dés que j'ai trouver
        0
        1. Contributeur
          Sur un des forum, certains parlaient d'un bug connu entre POST et NTML...
          0
        2. bon bah j'essaye de dire au revoir a ntlm
          0
        3. Contributeur
          Apparemment quand tu utilise à la fois des session (session_start()) et NTLM, les variables de type POST ne fonctionne plus...
          0
      2. Contributeur
        Essaie de renommer le fichier htaccess...
        0
        1. Le mystère continue :
          En local les $_POST ne fonctionne plus

          Voici mon fichier test.php
          <?php error_reporting(E_ALL); ?>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          <title>Document sans titre</title>
          </head>
          
          <body>
          <form name="form1" method="post" action="test.php">
            <p>
              <input name="champ" type="text" id="champ">
          </p>
            <p>
              <input type="submit" name="Submit" value="Envoyer">
          </p>
          </form>
          <?php echo $_REQUEST['champ']; ?>
          </body>
          </html>
          
          0
          1. Contributeur
            Résumons parce que cela devient complexe...

            En local, tes post fonctionnent-ils ? Avec n'importe quel page ?
            0
            1. Par contre les commentaire ci-dessus mon fait penser, j'ai modifier httpd.conf comme ci :
              #
              # Listen: Allows you to bind Apache to specific IP addresses and/or
              # ports, instead of the default. See also the <VirtualHost>
              # directive.
              #
              # Change this to Listen on specific IP addresses as shown below to 
              # prevent Apache from glomming onto all bound IP addresses.
              #
              Listen 10.75.30.218:80
              Listen 127.0.0.1:80
              0
              1. Contributeur
                Enlève les modifications alors... et refais un test...
                0
              2. le "Listen 10.75.30.218:80" est pour l'acces a ton serveur d'un autre poste.
                0
              3. j'ai recommenter listen 10.75.30.218:80
                donc depuis citrix je n'accede plus à mon serveur via cette même adresse
                et depuis le serveur en local ca marche toujours.
                0
              4. Oui, c'est normal.

                Si ton serveur n'écoute pas sur l'adresse de ta carte réseau, il ne va pas entendre la requete de ton client citrix.
                0
            2. Contributeur
              Essaye de supprimer le fichier htaccess... si j'ai bien compris, il devrait se recréer par défaut...
              0
              1. J'ai verifier mais ce n'est malheureusement pas ça.
                Donc je vais épaissir ce mystère, pour accéder a ce site je passe en local sur mon poste index.php marche.
                Et si je passe par mon bureau Citrix (en gros comme si un poste distant ce connecte) le $_POST marche plus.
                0
                1. Contributeur
                  Citrix ? Je croyait que tu testais uniquement en local...
                  0
                2. rajoute ton adresse ip local dans les exceptions de ton proxy quand tu passes par citrix
                  0
                3. Si le proxy bloquais cela n'afficherai carrément pas la page.
                  0
              2. Ha mais attends, je viens de comprendre je pense !

                ton fichier test.php là, il n'était pas à la racine avant si ?

                Et tu en avais pas un autre à la racine ?

                parce que selon les configs des serveurs, les "./index.php" peuvent être différents de "index.php"
                0
                1. Contributeur
                  Par défaut, c'est pareil... en tout cas, cela l'est pour EasyPHP...
                  0
                2. Par défaut oui, peut être ... Mais un htaccess qui traine dans le coin, un php.ini modifié ou autre et c'est le bordel ^^

                  D'ailleurs, son test.php qui posait erreur se trouvait à la racine :
                  referer: [http://localhost/test.php]
                  0
                3. ca a toujours fonctionner, c'est juste qu'il nous a pas envoyer la page complete donc voila....
                  0
                4. Contributeur
                  Si on vire carrément htaccess... qu'est-ce qui se passe ? Il se recrée derrière ?
                  0
                5. J'avais envoyer le fichier test.php complet
                  0
              3. Je viens de tester de tout virer du dossier www et de juste laisser un fichier index.php

                <form name="form1" method="post" action="index.php">
                  <p>
                    <input name="test" type="text" id="test">
                  </p>
                  <p>
                    <input type="submit" name="Submit" value="Envoyer">
                    </p>
                </form>
                <?php echo $_POST['test']; ?>


                Et la pour augmenter le mystère sa marche.

                Donc le problème viendrait d'un fichier tiers.
                0
                1. undefined index : champ ?
                  line 17 ?

                  T'es sûr de nous avoir posté la bonne page ? ^^
                  0
                  1. Grace à WAMP j'ai aussi les fichiers de log de apache :
                    Apache error log :
                    [Tue May 11 16:18:27 2010] [error] [client 127.0.0.1] PHP Notice: Undefined index: champ in C:\\wamp\\www\\test.php on line 17, referer: http://localhost/test.php

                    Apache acces log :
                    127.0.0.1 - - [11/May/2010:16:18:27 +0200] "POST /test.php HTTP/1.1" 200 562

                    Donc une requete POST a bien été envoyer à Apache et à priorie le problème vient d'ailleurs (enfin si j'ai bien compris ^^).
                    0
                    1. Tu pourrais pas essayer de rajouter
                      <?php 
                       error_reporting(E_ALL); 
                      ?>


                      Tout en haut de la page ?

                      Ca permettrait de voir s'il y a des warnings ou des notices
                      0
                      1. Bonjour,
                        J'ai eu un problème assez similaire à darkvandrech.
                        J'ai installé XAMP.
                        Et depuis ca marche.

                        PS : lorsqu'on installe XAMP, un fichier htaccess est nouvellement créé.

                        Je ne sais pas si cela pourra aider.

                        Bonne chance !
                        0
                        1. Contributeur
                          Essaie ça:

                          <p>
                          <form action="test.php" method="post">
                          <input type="text" name="txt" />
                          <input type="submit" value="Envoyer" />
                          </form>
                          <br />
                          </p>

                          <?php
                          if(isset($_POST['txt']))
                          {
                          echo 1;
                          echo $_POST['txt'];
                          }
                          ?>

                          Afin de vérifier si la variable existe, s'il affiche le 1, elle existe mais vide sinon elle n'existe carrément pas.
                          0
                          1. Contributeur
                            J'ai posté un sujet sur www.siteduzero.com...
                            Une des réponses propose ceci:

                            "mouais...
                            la c'est vraiment etrange...
                            sur firefox tu peux telecharger le plugin "tamper data"
                            quand tu le lance tu peux intercepter les requetes. Tu verra déja si elles sont meme plus envoyées par le navigateur ou si c'est php qui les intercepte plus
                            "
                            0
                            1. Contributeur
                              Pardonne mon ignorance, htaccess est un réglage sur EasyPHP ? Parce qu'une réinstallation ne change rien... et il rencontre le même soucis dans Wamp.

                              Le fait que POST est HS alors que GET fonctionne encore indique clairement un problème avec son serveur Apache... Mais ça me dépasse!
                              0
                              1. Htaccess est un petit fichier que l'on met dans un dossier, et qui définit des options sur les fichiers de ce dossier et de ses sous-dossiers

                                C'est une sorte de mini "php.ini" local à un dossier, donc rien à voir avec une quelconque réinstallation ^^
                                0
                              2. Contributeur
                                Peut-on réinitialiser ce fichier ?
                                0
                              3. Ben, tu peux en faire ce que tu veux
                                le réinitialiser ? Logiquement, il est créé à la main(à part peut être à la racine, où il doit y être par défaut), donc je vois pas comment le réinitialiser ^^
                                1
                              4. @Neliel

                                Avez-vous pu trouver la solution?

                                puisque je suis dans le même cas 

                                1
                              5. @Nf_gervain

                                je suis aussi dans le même cas j'essai de validé les données envoyer et cela n'inscrit riens dans ma table php myadmin alors que 2 jours avant tout fonctionnai biens

                                0
                            2. je n'ai pas touché au .htaccess
                              0
                              • 1
                              • 2