从表单发布到同一页面时ISSET的解决方法

时间:2014-08-13 14:38:55

标签: php forms

我试图测试访问特定PHP页面时是否设置了$ _GET变量:

我有一个表单,它返回到同一页面(见下文)下面,表单是PHP代码,用于检查product_id变量是否已设置并相应地执行操作。

FORM

<form action="form_update_products.php" method="post" name="search" id="search">         
          <table width="100%" cellspacing="0" cellpadding="2">
            <tr>
              <td colspan="2" class="text-18">
                View / Update Product Barcodes by Product ID:
              </td>
            </tr>
            <tr>
              <td colspan="2" align="right">
                <img src="images/spacer.png" width="100" height="4" />
              </td>
            </tr>
            <tr>
              <td width="12%" align="right">
                <input name="product_id" type="text" class="size-box" id="product_id"
                       onclick="this.value = '';" style="font-size: 22px; width:500px"/>
              </td>
              <td width="88%">
                <input name="submit" type="submit" class="submit-button"
                       id="submit" value="View Product Barcodes" />
</form>

form_update_products.php

<?php 

$product_id=$_POST['product_id'];

header('Location: update_products.php?id='.$product_id.'');

?>

PHP

if (isset($_GET['id']))
      {
        $product_id = $_GET['id'];
      }

      if (!isset($product_id))
      {
        echo '';
      }
      else { // output something }

由于某些原因,$_GET['id']变量似乎始终默认为相同的product_id,并且仅在表单中输入其他product_id时才会更改。即使关闭浏览器并重新打开页面,也会设置$_GET['id']变量。

有人能告诉我为什么$_GET['id']变量似乎总是被设定?

1 个答案:

答案 0 :(得分:1)

始终设置ID,您需要执行empty()检查empty()isset()相同,但也会检查是否输入了内容

if(!empty($_GET['id'])) {
      $product_id = $_GET['id'];
      //your code
} else {
   echo '';
}