2013-12-09 5 views
0

Я использую 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 не инициализируется (отпечатки Array на эхо).

Не могли бы вы указать, что я здесь делаю неправильно. Почему $ _POST не инициализируется?

Благодаря

+0

use print_r ($ _ POST) – gvgvgvijayan

+0

var_dump ($ _ POST); –

+0

@gvgvgvijayan: Он дает 'Array()' – nish

ответ

9

Там нет HTTP вызова при выполнении команды PHP строки в вашем случае, его вполне нормально, что $ _POST будет пустым.

В работе вокруг, я предложил бы делать что-то вроде следующего:

  1. Написать скрипт, который будет работать под веб-сервер, как Apache.
  2. Включите или требуйте свой PHP-скрипт.

Следующий фрагмент кода прояснит мои претензии:

<?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. 

Надеется, что это помогает.

+0

есть способ, которым я могу сделать HTTP-вызов при выполнении командной строки? – nish

+0

Да, вы можете использовать cURL –

1

Если вы запустите php так, как вы. Вы выполняете скрипт. Но фактически не публиковать форму. Вам нужно будет отправить форму через браузер, чтобы заполнить $_POST vars

+0

Его автономный php-файл. У меня нет домена или чего-то еще. Пожалуйста, не могли бы вы рассказать мне, как я могу отправить через браузер? Будет ли 'file: /// home/user/location' достаточно? – nish

Смежные вопросы