PHP $_POST[键] return 值
PHP $_POST[key] return value
我看到了一份 PHP 试卷,其中提供了与产品购物车功能相关的代码示例。当我浏览代码示例时,我遇到了某些 PHP if 条件,用于检查分配了 $_POST[key] 值的变量是否为假。以下是与我面临的问题相关的代码示例。
nicepage.php
$id=$_GET['previd'];
$SQL = "select * from pro where prId=".$id;
$runSQL = mysql_query($SQL) or die(mysql_error());
$details = mysql_fetch_array($runSQL);
echo "<p>Catalogue Item Number: ".$details['prId'];
echo "<p>". strtoupper($details['prName']);
echo "<p>".$details['prDescrip'];
echo "<p><img src=images/".$details['prPicName'].">";
echo "<p>£".$details['prPrice'];
echo "<p>".$details['prQuantity']." items for you to get!" ;
echo "<form method=post action=greatpage.php>" ;
echo "<p>Enter how many: ";
echo "<input type=text name=newqu size=5 maxlength=3>";
echo "<input type=submit value='Get them'>";
echo "<input type=hidden name=newid value=".$id.">";
echo "</form>" ;
echo "</center>";
echo "</body>";
echo "</html>";
greatpage.php
$theid=$_POST['newid'];
$thequ=$_POST['newqu'];
if (!$theid)
{
echo "<p>Nothing new is added, show the stuff from before";
}
else
{
if (!$thequ or $thequ==0)
{
echo "<p>Error!";
echo "<p><a href=nicepage.php>Enter correct value!</a>";
exit;
}
else
{
$theSQL="select prQuantity from pro where prId=".$theid;
$runtheSQL=mysql_query($theSQL) or die (mysql_error());
$info=mySQL_fetch_array($runtheSQL);
$ourqu=$info['prQuantity'];
if ($thequ > $ourqu)
{
echo "<p>Not good!";
echo "<p><a href=nicepage.php> Do it again!</a>";
exit;
}
else
{
echo "<p>Great, item added!";
$_SESSION['storage'][$theid]=$thequ;
}
}
}
以上代码示例提供了与该问题相关的部分 PHP 脚本。
我是一个相对较新的 PHP 程序员,因此请原谅我犯的任何错误。
我想了解为什么要检查 $theid
和 $thequ
是否等于 false,而不是使用像 isset($_POST['key'])
这样的函数来检查 $_POST
全局变量在分配给两个 PHP $theid
和 $thequ
变量之前设置。
在上面的代码示例中,哪些情况可能导致 !$theid
和 !$thequ
为真?
如果有人能解决这个难题,我将不胜感激。
如果您使用 isset(),它会检查变量是否存在。所以如果你说
$id="";
结果将为 TRUE,因为变量存在。但是是空的。
最好的方法是;
if(empty($id)) {
//your code
} else {
//your code when NOT empty
}
所以让我们分解一下
if(!$theid)
这是检查变量是否存在的糟糕方法。你应该做一些更像 if(isset($_POST['newid']))
的事情,这将明确告诉你该字段已提交
if (!$thequ or $thequ==0)
同样,我们检查该值是否存在的方法很差,但第二个是查看字段是否提交为空的草率方法。如果您提交一个空字段,它的值将为 ''
,或一个空字符串。由于空字符串是 false
y,您可以检查 anything PHP considers to be false。所以 '' == 0
是正确的。我至少会使用 ''
或 empty()
而不是 0
(这样可以提高可读性)。
接下来,您的 SQL 对 SQL injection 敞开大门。
最后,请不要将mysql_
函数用作they are deprecated and will soon be removed from PHP
我看到了一份 PHP 试卷,其中提供了与产品购物车功能相关的代码示例。当我浏览代码示例时,我遇到了某些 PHP if 条件,用于检查分配了 $_POST[key] 值的变量是否为假。以下是与我面临的问题相关的代码示例。
nicepage.php
$id=$_GET['previd'];
$SQL = "select * from pro where prId=".$id;
$runSQL = mysql_query($SQL) or die(mysql_error());
$details = mysql_fetch_array($runSQL);
echo "<p>Catalogue Item Number: ".$details['prId'];
echo "<p>". strtoupper($details['prName']);
echo "<p>".$details['prDescrip'];
echo "<p><img src=images/".$details['prPicName'].">";
echo "<p>£".$details['prPrice'];
echo "<p>".$details['prQuantity']." items for you to get!" ;
echo "<form method=post action=greatpage.php>" ;
echo "<p>Enter how many: ";
echo "<input type=text name=newqu size=5 maxlength=3>";
echo "<input type=submit value='Get them'>";
echo "<input type=hidden name=newid value=".$id.">";
echo "</form>" ;
echo "</center>";
echo "</body>";
echo "</html>";
greatpage.php
$theid=$_POST['newid'];
$thequ=$_POST['newqu'];
if (!$theid)
{
echo "<p>Nothing new is added, show the stuff from before";
}
else
{
if (!$thequ or $thequ==0)
{
echo "<p>Error!";
echo "<p><a href=nicepage.php>Enter correct value!</a>";
exit;
}
else
{
$theSQL="select prQuantity from pro where prId=".$theid;
$runtheSQL=mysql_query($theSQL) or die (mysql_error());
$info=mySQL_fetch_array($runtheSQL);
$ourqu=$info['prQuantity'];
if ($thequ > $ourqu)
{
echo "<p>Not good!";
echo "<p><a href=nicepage.php> Do it again!</a>";
exit;
}
else
{
echo "<p>Great, item added!";
$_SESSION['storage'][$theid]=$thequ;
}
}
}
以上代码示例提供了与该问题相关的部分 PHP 脚本。
我是一个相对较新的 PHP 程序员,因此请原谅我犯的任何错误。
我想了解为什么要检查 $theid
和 $thequ
是否等于 false,而不是使用像 isset($_POST['key'])
这样的函数来检查 $_POST
全局变量在分配给两个 PHP $theid
和 $thequ
变量之前设置。
在上面的代码示例中,哪些情况可能导致 !$theid
和 !$thequ
为真?
如果有人能解决这个难题,我将不胜感激。
如果您使用 isset(),它会检查变量是否存在。所以如果你说
$id="";
结果将为 TRUE,因为变量存在。但是是空的。
最好的方法是;
if(empty($id)) {
//your code
} else {
//your code when NOT empty
}
所以让我们分解一下
if(!$theid)
这是检查变量是否存在的糟糕方法。你应该做一些更像 if(isset($_POST['newid']))
的事情,这将明确告诉你该字段已提交
if (!$thequ or $thequ==0)
同样,我们检查该值是否存在的方法很差,但第二个是查看字段是否提交为空的草率方法。如果您提交一个空字段,它的值将为 ''
,或一个空字符串。由于空字符串是 false
y,您可以检查 anything PHP considers to be false。所以 '' == 0
是正确的。我至少会使用 ''
或 empty()
而不是 0
(这样可以提高可读性)。
接下来,您的 SQL 对 SQL injection 敞开大门。
最后,请不要将mysql_
函数用作they are deprecated and will soon be removed from PHP