簡體   English   中英

PHP _POST數組為空

[英]PHP _POST array is empty

我只是看不到問題。 需要一些新的眼睛來進行審查。 兩個文件包括var_dump的test.php和test2.php。 救命!! 剪切,粘貼和運行-謝謝

test.php:
<?php
ini_set('error_reporting', E_ALL );
ini_set('display_errors', "1");
?>

<style type="text/css">
div.tabcontent{
  visibility: hidden;
  position:absolute;
  left:20px;
}
</style>

<script type="text/javascript">
  function switch_div(){
    val=document.form1.a_type.selectedIndex;
    if (val < 3){
      val="a0";
      data=document.getElementById("data_types").innerHTML+document.getElementById(val).innerHTML;
    }else if (val==3){
      val="a"+document.form1.a_type.selectedIndex;
      data=document.getElementById("data_types").innerHTML+document.getElementById(val).innerHTML;
    }else{
      val="a"+document.form1.a_type.selectedIndex;
      data=document.getElementById(val).innerHTML;
    }
    document.getElementById('anw_wksp').innerHTML=data;
  }
</script>

<html>
<body>
<form name="form1" action="test2.php" method="post" >
<table>
  <th >Enter Anwsers</th>
  <tr>
    <td>Anwser Type</td>
  </tr>
  <tr>
    <td><select name="a_type" onChange="switch_div()"/>
        <option value='radio'>radio</option>
        <option value='checkbox'>checkbox</option>
        <option value='select'>select</option>
        <option value='text'>text</option>
        <option value='textarea'>textarea</option>
      </select>
    </td>
  </tr>

      <div id="anw_wksp" style="border:1px solid gray; margin-bottom: 1em; padding: 10px">
      </div>
        <div id="data_types" class="tabcontent">
          <table>
          <th colspan="3">Data type</th>
            <tr><td>
            <input type="radio" name="a_data_type" value="text" selected>text<br>
            <input type="radio" name="a_data_type" value="int">int </td>
            </td>
          </tr>
          </table>
        </div>
        <div id="a0" class="tabcontent"> <!--radio/checkbox/select button-->
          <table>
            <th>Readable Anwser</th><th>DB Value</th><th>Default</th>
              <? $i=0;
                while($i < 10){
                  echo "<tr><td><input type=\"text\" name=\"a_r_$i\" /></td>
                      <td><input type=\"text\" name=\"a_db_$i\" /></td>
                       <td><input type=\"radio\" name=\"default\" value=\"$i\" /></td></tr>";
                  $i++;
                }
              ?>
          </table>
        </div>

        <div id="a3" class="tabcontent">
          <table>
            <th>Readable Anwser</th><th>DB Value</th><th>Default</th>
            <tr><td><input type="text" name="a_r_text"></td>
              <td><input type="text" name="a_db_text"></td>
              <td><input type="text" name="default_text" ></td></tr>
          </table>
        </div>

        <div id="a4" class="tabcontent">
          <table>
            <th>Readable Anwser</th><th>Default</th>
            <tr><td><input type="text" name="a_r_textarea"></td>
              <td><textarea name="default_textarea"  rows="5" cols="30"></textarea></td></tr>
          </table>
        </div>
    </td>
  </tr>
</td>
</tr>
  <tr>
  <td><input type="submit" value="Enter" name="submit">
  </td>
</table>
</form>
</body>
</html>


<script language="javascript">switch_div();</script>
-------------------------------------------------------------------

test2.php:

<?php

$data = file_get_contents('php://input');

if(empty($_SERVER['CONTENT_TYPE'])){

     $type = "application/x-www-form-urlencoded";

     $_SERVER['CONTENT_TYPE'] = $type;

}

print "_POST = <br />";
var_dump($_POST);
print "<br />";
print " DATA = <br />";
var_dump($data);

?>
  1. 您沒有<head>
  2. <html>之外不能有<script>標記。 也許您想要外部JS文件
  3. <html>之外不能有<style>標記。 也許您想要外部CSS文件
  4. 您的腳本/樣式或其外部<link>可能應該在您的<head>內部
  5. 您不能在<th> <td>之外使用<th><td> <tr> 正確的例子
  6. 您不聲明doctype
  7. 表行之間不能隨機包含<div>
  8. echo <tr>的方法很草率...

代替:

<? $i=0;
            while($i < 10){
              echo "<tr><td><input type=\"text\" name=\"a_r_$i\" /></td>
                  <td><input type=\"text\" name=\"a_db_$i\" /></td>
                   <td><input type=\"radio\" name=\"default\" value=\"$i\" /></td></tr>";
              $i++;
            }
          ?>

考慮類似:

<? for($i = 0; $i < 10; $i++) { ?>
    <tr>
        <td><input type="text" name="a_r_<?=$i?>" /></td>
        <td><input type="text" name="a_db_<?=$i?>" /></td>
        <td><input type="radio" name="default" value="<?=$i?>" /></td>
    </tr>
<? } ?>

最后,要嘗試調試問題,請使用Firebug(適用於Chrome / Firefox)之類的工具來確保按預期方式提交POST數據。

我知道這是一個la腳的答案,但只想把它扔出去以確保我們沒有看過最簡單的事情。 您是否檢查了html中的form標記以確保將其設置為POST?

我建議檢查請求方法是否確實在test2.php腳本上。

<?php
if (strtolower($_SERVER["REQUEST_METHOD"]) == "post") {
    $data = file_get_contents('php://input');

    if(empty($_SERVER['CONTENT_TYPE'])){
        $type = "application/x-www-form-urlencoded";
        $_SERVER['CONTENT_TYPE'] = $type;
    }

    print "_POST = <br />";
    var_dump($_POST);
    print "<br />";
    print " DATA = <br />";
    var_dump($data);
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM