当使用$ _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>
答案 0 :(得分:0)
您有几个问题:
<li>
代码需要关闭我建议你稍微简化一下:
print "Fries: " . $_GET["chkFries"] . "<br/>" .
"Soda: " . $_GET["chkSoda"] . "<br/>" .
"Burger: " . $_GET["chkBurger"] . "<br/>" .
"Shake: " . $_GET["chkShake"] . "<br/>";
答案 1 :(得分:0)
首先:永远不要使用未转义的$_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。