PHP $ _GET变量用法

时间:2016-04-17 22:12:07

标签: php

当使用$ _GET功能时,我有时会收到错误并且有时会发出警告,我想知道原因。

以下剪辑可行:

Fries: $_GET[chkFries]<br>

但是,当我在chkFries周围放一个引号时,我收到错误,为什么?

以下剪辑可行:

if(!empty($_GET["chkFries"]))

但是,当我删除双引号时,我收到以下错误,为什么?

  

注意:使用未定义的常量chkFries - 在第20行的/var/www/html/checkBoxDemo/checkBoxDemo.php中假定为'chkFries'

以下是我程序中的两个文件。

<HTML>
<HEAD>
<TITLE>Fast food ordering</TITLE>
</HEAD>

<BODY>
<H1>Menu</H1>

<FORM action = "checkBoxDemo.php">
<UL>
    <LI><input type="checkbox" name="chkFries" value="1.00">Fries
    <LI><input type="checkbox" name="chkSoda" value="0.50">Soda
    <LI><input type="checkbox" name="chkBurger" value="2.00">Burger
    <LI><input type="checkbox" name="chkShake" value="0.25">Shake
</UL>

<input type="submit">
</FORM>

</BODY>
</HTML>

PHP计划               复选框演示PHP     

<BODY>
<H1>This is what you ordered</H1>

<?PHP
print <<<HERE

Fries: $_GET[chkFries]<br>
Soda: $_GET[chkSoda]<br>
Burger: $_GET[chkBurger]<br>
Shake: $_GET[chkShake]<br>
HERE;

$total=0;

if(!empty($_GET["chkFries"]))
$total=$total+$_GET['chkFries'];

if (!empty($_GET['chkSoda']))
$total=$total+$_GET['chkSoda'];

if (!empty($_GET['chkBurger']))
$total=$total+$_GET['chkBurger'];

if (!empty($_GET['chkShake']))
$total=$total+$_GET['chkShake'];

print "Your total is: $total";
?>
</BODY>
</HTML>

2 个答案:

答案 0 :(得分:0)

您有几个问题:

  1. 您的<li>代码需要关闭
  2. 在引用的块中使用引号可能会有问题
  3. 我建议你稍微简化一下:

    print "Fries: " . $_GET["chkFries"] . "<br/>" .
        "Soda: " . $_GET["chkSoda"] . "<br/>" .
        "Burger: " . $_GET["chkBurger"] . "<br/>" .
        "Shake: " . $_GET["chkShake"] . "<br/>";
    

答案 1 :(得分:0)

FYI

首先:永远不要使用未转义的$_GET$_POST$_REQUEST$_SESSION。进一步阅读:http://phpsecurity.readthedocs.org/en/latest/Cross-Site-Scripting-%28XSS%29.html

其次,你应该发布通知。看起来你正在使用未定义的变量。只要您的复选框没有值,该变量就不存在。例如,当您第一次浏览本网站时。

解决方案

<?php 

  $order = array();

  $order['fries'] = htmlentities($_GET["chkFries"]);
  // Copy and past for the rest

?> 


<BODY>
<H1>This is what you ordered</H1>


  <!-- Copy and past for the rest -->
  <? if($fries) ?>
    Fries: <? echo $fries; ?>
  <? endif ?>

  <?

    $total = 0;

    foreach ($order as $price) {
      if($price > 0) $total += $price;
    }

    echo "Your total is: $total";

  ?>
</BODY>
</HTML>

此代码未经测试。

通知原因

由于您的HERE部分缺少引号,您一直在数组中使用constans。