PHP _POST数组为空

时间:2010-07-06 18:23:31

标签: php

我只是没有看到问题。需要一些新的眼睛来审查它。两个文件包括test.php和test2.php到var_dump。救命!!剪切,粘贴和运行 - 谢谢

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);

?>

3 个答案:

答案 0 :(得分:5)

  1. 您没有<head>
  2. 您的<script>之外不能有<html>个标记。也许你想要external JS files
  3. 您的<style>之外不能有<html>个标记。也许你想要external CSS files
  4. 您的脚本/样式或其外部<link>应该位于<head>
  5. 您不能在<th>之外拥有<td><tr>Proper example
  6. 你没有declare a doctype
  7. 您不能在表格行之间随机<div>
  8. echo <tr>的{​​{1}}的方法很邋...... ......
  9. 而不是:

    <? $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>
    <? } ?>
    

    最后,要尝试调试您的问题,请使用适用于Chrome / Firefox的Firebug工具,以确保您按预期提交POST数据。

答案 1 :(得分:0)

我知道这是一个蹩脚的答案,但只是想把它扔出去,以确保我们不会看到最简单的事情。您是否检查了html中的表单标签以确保它已设置为POST?

答案 2 :(得分:0)

我建议检查请求方法实际上是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);
}
?>