Я столкнулся с вопросом на PHP, который предоставил образец кода, связанный с функциональностью тележки продукта. Когда я просмотрел образец кода, я натолкнулся на определенные условия PHP, если проверяет, была ли указана переменная, которой присвоено значение $ _POST [key], false. Ниже приведены примеры кода, связанные с проблемой, с которой я столкнулся.
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, поэтому прошу прощения за любые ошибки, которые я совершаю.
Я хотел бы узнать, почему $theid
и $thequ
проверяются, если они равны ложным, а не использовать функцию как isset($_POST['key'])
, чтобы проверить, если $_POST
глобальные переменные установлены перед назначением на два PHP $theid
и $thequ
переменных.
И в приведенном выше примере кода, какие ситуации могут привести к тому, что !$theid
и !$thequ
являются истинными?
Я был бы чрезвычайно признателен всем, кто может решить эту головоломку.
Прежде всего, пожалуйста, прочитайте о SQL Injection. –
Те 'if (!$ theid) 'и подобные утверждения не проверяют, является ли значение ложным, а скорее, если это значение ложно, которое включает в себя null, пустую строку, пустой массив, строку, такую как« 0 »и т. д.). Это, честно говоря, не очень хороший способ программирования. –
Спасибо. Я думаю, что это хорошее объяснение некоторых сомнений, которые у меня были. –