$ _POST没有初始化

时间:2013-12-09 10:04:25

标签: php

我第一次使用php。据我所知,创建HTML表单会初始化$_POST, $_GET, $_REQUEST等变量。

我在AddItem.php中有以下代码:

<?php require_once('../get-common/keys.php') ?>
<?php require_once('../get-common/eBaySession.php') ?>
<!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>AddItem</TITLE>
</HEAD>
<BODY>
<FORM action="AddItem.php" method="post">
<TABLE cellpadding="2" border="0">
    <TR>
        <TD>listingType</TD>
        <TD>
          <select name="listingType">
            <option value="Chinese">Chinese</option>
            <option value="Dutch">Dutch</option>
            <option value="FixedPriceItem">Fixed Price Item</option>
            <option value="StoresFixedPrice">Stores Fixed Price</option>
          </select>
        </TD>
    </TR>
    <TR>
        <TD>primaryCategory</TD>
        <TD>
          <select name="primaryCategory">
        <option value="14111">Test Category</option>
            <option value="57889">Boys Athletic Pants</option>
            <option value="57890">Boys Corduroys Pants</option>
            <option value="57891">Boys Jeans Pants</option>
            <option value="57892">Boys Khakis Pants</option>
          </select>
        </TD>
    </TR>
    <TR>
        <TD>itemTitle</TD>
        <TD><INPUT type="text" name="itemTitle" value="TEST IN SANDBOX BEFORE PROD - DO NOT BID" size=30></TD>
    </TR>
    <TR>
        <TD>itemDescription</TD>
        <TD><INPUT type="text" name="itemDescription" value="TEST IN SANDBOX BEFORE PROD - DO NOT BID - This will incur prod listing fees" size=30></TD>
    </TR>
    <TR>
      <TD>listingDuration</TD>
        <TD>
          <select name="listingDuration">
            <option value="Days_1">1 day</option>
            <option value="Days_3">3 days</option>
            <option value="Days_5">5 days</option>
            <option value="Days_7">7 days</option>
          </select>
          (defaults to GTC = 30 days for Store)
        </TD>
    </TR>
    <TR>
        <TD>startPrice</TD>
        <TD><INPUT type="text" name="startPrice" value="<?php echo rand(1,200) / 100 ?>"></TD>
    </TR>
    <TR>
        <TD>buyItNowPrice</TD>
        <TD><INPUT type="text" name="buyItNowPrice" value="<?php echo rand(299,599) / 100; ?>"> (set to 0.0 for Store)</TD>
    </TR>
    <TR>
        <TD>quantity</TD>
        <TD><INPUT type="text" name="quantity" value="1"> (must be 1 for Chinese)</TD>
    </TR>
    <TR>
        <TD colspan="2" align="right"><INPUT type="submit" name="submit" value="AddItem"></TD>
    </TR>
</TABLE>
</FORM>


<?php
    if(isset($_POST['listingType']))
    //....some more code
?>

使用php -f AddItem.php运行文件时,只会打印HTML。 <?php ?>内部没有任何内容被执行。这是因为$ _POST未初始化(在echo上打印Array。)

有人可以指出我在这里做错了什么。为什么$ _POST没有初始化?

由于

2 个答案:

答案 0 :(得分:9)

在你的情况下,php命令行执行中没有HTTP调用,很正常,$ _POST将为空。

作为一种解决方法,我建议做类似以下的事情:

  1. 编写一个可在Apache等Web服务器下运行的脚本。
  2. 包含或要求您的PHP脚本。
  3. 以下代码段将阐明我的说法:

    <?php
      require_once('/path/to/your_command_line_php_script.php');
    
      // Now inside your_command_line_php_script.php you will have $_POST available and initialized.
    

    希望这有帮助。

答案 1 :(得分:1)

如果你以你的方式运行php。您正在执行该脚本。但实际上并没有张贴表格。您必须通过浏览器提交表单以填充$_POST vars