Javascript 如何添加一个按钮,单击该按钮将进入产品页面,其中包含更多产品描述以及评论和评级

Javascript 如何添加一个按钮,单击该按钮将进入产品页面,其中包含更多产品描述以及评论和评级,javascript,php,html,css,e-commerce,Javascript,Php,Html,Css,E Commerce,我正试图为大学做一个项目,我被困在这一部分。 我试图显示一个按钮,打开一个特定的产品,让用户订购/添加到购物车/评分 我对java脚本知之甚少,大约2个月前开始使用PHP。 这是我的密码 $sql="select * from products"; $rs=$db->query($sql); echo "<form method='post' action=viewitem.php>"; echo "<table>"; foreach ($rs as $row) {

我正试图为大学做一个项目,我被困在这一部分。 我试图显示一个按钮,打开一个特定的产品,让用户订购/添加到购物车/评分

我对java脚本知之甚少,大约2个月前开始使用PHP。 这是我的密码

$sql="select * from products";
$rs=$db->query($sql);
echo "<form method='post' action=viewitem.php>";
echo "<table>";
foreach ($rs as $row) {
    $id=$row[0];
    echo "<tr><td><img src = '/3331/333/bootstrap-shop/pimages/MensShirts/$row[6]' width='250' height='250'></td>
          <td><pre>$row[5]</pre></td></tr>";
    echo "<tr><td>$row[3] - <strong>BD$row[4]</strong></td></tr>";
    echo "<td><input type='submit' name='$id' value='View more'/></td></tr>";
}
echo "</table>";
echo "</form>";
$sql=“从产品中选择*”;
$rs=$db->query($sql);
回声“;
回声“;
foreach($rs作为$row){
$id=$row[0];
回声“
$row[5]”;
echo“$row[3]-BD$row[4]”;
回声“;
}
回声“;
回声“;
我提交的表格是

$pid = null;
if ( !empty( $_GET[ 'id' ] ) ) {
    $pid = (int)$_GET[ 'id' ];
}
$pid=$id;
$sql=“从pid=“$pid”的产品中选择*;
$rs=$db->query($sql);
回声“;
回声“;
foreach($rs作为$row){
$id=$row[0];
回声“;
echo“$row[3]-BD$row[4]”;
}
回声“;
回声“;

我应该在那里添加更多的项目,但我似乎无法找到用户确切单击的产品。它一直说,
$pid/$id
是未定义的。

因此,与其提交表单查看产品,只需创建一个链接并将产品id作为参数传递即可

例如,在您的列表页面上,您将有


“width=“250”height=“250”>
URL参数可以通过
$\u GET
数组访问,但由于我们将在SQL查询中使用此参数的值,因此我们必须清理数据,因为您很容易受到SQL注入攻击

下面的一行基本上是检查url中是否存在
id
参数,如果它确实存在,请确保它是一个有效的整数

$pid=!empty($\u GET['id'])?(int)$\u GET['id']:null;
这和

现在举一个简单的例子,说明如果不清理输入数据会发生什么

如果将
$\u GET['id']
值直接传递到sql查询中,例如:

$db->query(“从产品中选择*,其中pid=“.$\u GET['id']);
然后,攻击者可以开始在您的数据库上运行他们自己的SQL查询,因此如果他们访问
http://example.com/viewitem.php?id=1;从用户中选择*;
将运行以下查询

SELECT*来自pid=1的产品;SELECT*来自用户;

这是SQL注入的一个非常基本的示例,我强烈建议对其进行更深入的研究。

这不是它的工作原理。请阅读我非常了解表单的工作原理,并感谢您的回复。正如您所看到的,每个产品都将有自己的提交按钮作为其在foreach循环中的一部分。我希望能够将此提交按钮命名为相同的名称名称作为数据库中的产品ID,以便比较值和显示信息。此外,我使用“提取($\u POST)”'与单独获取每个元素不同的是,OK>什么是
name='$id'
意思是什么?表单提交后如何在PHP中获取该值?将生成一个名为$id的帖子。例如,如果'$id'变量的值为'3'。您可以通过$\u POST['3']访问它。如果使用extract($\u POST)结果是,您有一个名为$3的变量,其值将为“查看更多”。我试图从输入sumbit的名称中获取ID,并希望知道您不能以这种方式使用php变量。多亏了我下面的用户,他提醒了我get方法(我不到两个月前就开始学习php)。如果你不苛刻,我会很感激,因为我只是想学习,不打扰任何人。非常感谢你的帮助,我真的很感谢你的帮助!我知道sql注入,但对它了解不多。你推荐我可以了解PHP更多的书/视频/网站吗?我去的大学预算很低,所以他们只会简单地介绍一些基本知识。我大多数人最终使用youtube进行学习。
$pid = null;
if ( !empty( $_GET[ 'id' ] ) ) {
    $pid = (int)$_GET[ 'id' ];
}