$ _POST返回一个数组

时间:2015-08-29 13:03:15

标签: php html arrays post

我最近遇到了一个$ _POST问题。

当我写:

$nb_acces = $_POST['nb_acces'];
print_r($nb_acces )

我明白了:

  

1

我在表单中写的是值。

但如果我写:

<form id='sous_paiement' name='sous_paiement' method='post' action='commande_enregistre_test.php?ecole=<?php echo $id_ecole; ?>'>
    <input id='nb_acces' name='nb_acces' style='width:90px;border:1px solid black;padding-left:4px;text-align:center;' />

我明白了:

  

数组([nb] =&gt; 0)

以前工作过,现在我不明白会发生什么。它可能来自服务器配置还是什么?

编辑:

我的意见:

function filtre_saisie() {
      var input_acces = document.getElementById("nb_acces");
      var nb_acces = input_acces.value.replace(/[^0-9]/g, '');
      input_acces.value = nb_acces;

      var prix_unitaire = calcul_prix_unitaire(nb_acces);
      var prix_total = calcul_prix_total(nb_acces);

      document.getElementById("div_prix_unitaire").innerHTML = prix_unitaire;
      document.getElementById("div_prix_total").innerHTML = prix_total;
    }

是的,如果我使用$ _POST [&#39; nb_acces&#39;]我可以回显该值。虽然我希望检查值是否有整数并避免注入。

我得到这个阵列的方式是我不明白的。我只有一个输入。

它可以来自我检查JavaScript函数(对不起法语单词,我删除这里的任何非数字字符并计算一些价格):

<form id='sous_paiement' name='sous_paiement' method='post' action='commande_enregistre_test.php?ecole=<?php echo $id_ecole; ?>'>
      <div class="div_categories">
        <p style='margin:0;padding:3px;padding-left:60px;'>Indiquez le <strong>nombre d'accès</strong> que vous souhaitez acheter :</p>
      </div>

      <br />
      <div id="erreur_nb_acces" style="color:red;"><br /></div>


      <table style='border-collapse:collapse;'>
        <tr style='font-weight:bold;border:1px solid #eee;background-color:white;'>
          <td style='width:200px;padding-left:10px;'>Nombre d'accès</td>
          <td style='width:100px;padding-left:10px;padding-right:10px;'><input id='nb_acces' name='nb_acces' type="text" style='width:90px;border:1px solid black;padding-left:4px;text-align:center;' /></td>
        </tr>
      </table>

      <br />

      <table style='border-collapse:collapse;'>
        <tr style='border:1px solid #eee;background-color:white;border-bottom:1px solid #999;'>
          <td style='width:200px;padding-left:10px;'>Prix par accès</td>
          <td style='width:100px;padding-left:10px;padding-right:10px;text-align:right;'><div id='div_prix_unitaire' style='display:inline;'>-</div> &euro;</td>
        </tr>
        <tr style='font-weight:bold;border:1px solid #999;background-color:white;'>
          <td style='width:200px;padding-left:10px;'>PRIX TOTAL</td>
          <td style='width:100px;padding-left:10px;padding-right:10px;text-align:right;'><div id='div_prix_total' style='display:inline;'>-</div> &euro;</td>
        </tr>
      </table>

      <div style='width:190px;margin-top:5px;'>
        <a href='#' onclick='ouvrirPopUp_tarifs();'><img src='../images/IconeInformation.png' style='border:0px solid red;float:left;display:inline;' /><span style="line-height:24px;">Consulter les tarifs</span></a>
      </div>
      <div style="clear:both;"></div>

      <br /><br />
      <div class="div_categories">
        <p style='margin:0;padding:3px;padding-left:60px;'>Choisissez votre <strong>mode de paiement</strong> :</p>
      </div>

      <br /><br />

      <table class="tab_mode_paiement" style="border-collapse:collapse;">
        <tr>
          <td>
            <input id='paiement_cb' name='mode_paiement' value='5' class='eleves' type='radio' checked="checked" style="cursor:pointer" />
          </td>
          <td style="font-weight:bold;padding-right:80px;border-right:1px solid #999;">
            <label for='paiement_cb' style="cursor:pointer">
              <img src="../images/ic_cb.jpg" style="float:left;display:inline;padding-right:10px;" /> Carte bancaire
            </label>
          </td>
          <td style="padding-left:40px;">
            <!--<input id='paiement_paypal' name='mode_paiement' value='3' class='eleves' type='radio' style="cursor:pointer" />-->
          </td>
          <td style="font-family:arial;font-size:20px;padding-right:120px;">
            <!--<label for='paiement_paypal' style="cursor:pointer">
              <span style="color:rgba(0,3,128,1)">Pay</span><span style="color:rgba(0,158,210,1)">Pal</span>
            </label>-->
          </td>
          <td>
            <input id='paiement_virement' name='mode_paiement' value='1' class='eleves' type='radio' style="cursor:pointer" />
          </td>
          <td style="font-weight:bold;">
            <label for='paiement_virement' style="cursor:pointer">
              Par virement bancaire
            </label>
          </td>
        </tr>
        <tr>
          <td colspan="2" style="border-right:1px solid #999;">Recevez vos accès immédiatement</td>
          <td colspan="4" style="padding-left:90px;">Accès disponibles après réception du paiement</td>
        </tr>
      </table>

      <br /><br /><br />

      <input id='enregistrer' name='enregistrer' value='Enregistrer la commande' type='button' onclick='verif_sous_paiement();' style='width:300px;height:40px;' />
      <br /><br />
      <br />
    </form>

可能是替换吗?

编辑2 ----------------------------------

整个表格:

<script>

    function ouvrirPopUp_tarifs() {
      window.open ('tarifs.php', 'tarifs', config='height=370, width=760, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, directories=no, status=no');
    }

    var tab_responsables = new Array();
    var tab_acces_responsables = new Array();
    var nb_responsables = 0;

    function initialiser_filtre_saisie() {
      setInterval("filtre_saisie()", 200);
    }

    function filtre_saisie() {
      var input_acces = document.getElementById("nb_acces");
      var nb_acces = input_acces.value.replace(/[^0-9]/g, '');
      input_acces.value = nb_acces;

      var prix_unitaire = calcul_prix_unitaire(nb_acces);
      var prix_total = calcul_prix_total(nb_acces);

      document.getElementById("div_prix_unitaire").innerHTML = prix_unitaire;
      document.getElementById("div_prix_total").innerHTML = prix_total;
    }

    function verif_sous_paiement() {
      filtre_saisie();

      var nb_acces = document.getElementById("nb_acces").value;

      if (nb_acces == 0) {
        document.getElementById("erreur_nb_acces").innerHTML = "Veuillez indiquer un <strong>nombre d'accès</strong>.";
        document.getElementById('nb_acces').focus();
      }
      else {
        document.getElementById('sous_paiement').submit();
      }
    }
  </script>

我的Javascript:

<?php
  $query = "SELECT `band`.`band_id`, `band`.`title` FROM `band`";
  $result = mysqli_query($mysqli, $query);
  if (!$result) {
    die("Database query failed.");
  }
?>

<?php
  if (isset($_POST['select_band'])) {
    $selected_band_id = $_POST['select_band'];
  }
?>

<form method="post" name="form_band" action="">
  <select name="select_band" onchange="javascript: submit()">
    <?php
      while ($row = mysqli_fetch_assoc($result)) 
     {?>
        <option value="$row['band_id']" <?if($row['band_id']==$selected_band_id){echo "selected";}?>>$row["title"]</option>
     // Here, selected item will get as selected
      <?}
    ?>
 </select>
</form>

似乎我的整个代码都害怕每个人 - .-

2 个答案:

答案 0 :(得分:0)

您错过了type="text"中的input属性,即使是浏览器,也可能会出现问题;

<input type="text" id='nb_acces' name='nb_acces' .......... />

此外,您似乎要更换以数字开头的任何内容,例如1,空值,这就是您获得0的原因:

var nb_acces = input_acces.value.replace(/\d/g, '')

答案 1 :(得分:0)

好吧,我看到有人告诉我用var_dump检查的消息,这帮助我现在想出为什么会出现这个问题。我不知道为什么这条消息已被删除,因为它帮助了我很多。感谢谁发布了它。

如果有人遇到同样的问题,但我知道它来自旧的且可能是糟糕的服务器配置,那么使用$ nb_acces和$ _POST [&#39; nb_acces&#39;]会产生冲突。不要使用相同的名称。这就是所有 - .-