我试图创建一个php购物车,我有一个包含几个产品的表,当我点击提交按钮时,会调用一些javascript,然后提交表单。 当我执行页面并按下按钮时,我得到一个页面" productcart.php?productid = 1& command = add"和chrome表示存在内部服务器错误。我相信有一个jscript或PHP错误,不允许将变量拉入php代码块。任何人都可以看到我做错了什么吗? 还有什么"?productid = 1& command = add"意思?为什么浏览器会返回?
<script type="text/javascript">
function addtocart(prod_id)
{
document.productform.productid.value = prod_id;
document.productform.command.value = 'add';
document.productform.submit();
}
</script>
&#13;
<?php
include("local-connect.php");
include("productfunctions.php");
if($_REQUEST['command'] == 'add' && $_REQUEST['productid'] > 0)
{
$product_id = $_REQUEST['productid'];
add_to_cart($product_id, 1);
echo 'it worked';
//header("Location:cart.php");
exit();
}
?>
<form name="productform" action="">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
<table id="product_table">
<?php
$query = "SELECT * FROM products";
$result = mysqli_query($dbc,$query) or die ("Error querying database");
while($row = mysqli_fetch_array($result))
{
echo '<tr>
<td><img id="shopping_img" src="' .$row['image'] . '"/></td>
<td><p><strong>' . $row['name'] . '</strong></p>
<p>' . $row['descri'] . '</p>
<p>Price:<strong>$' . $row['price'] . '</strong></p></td>
<td><input type="button" value="Add to Cart" onclick="addtocart(' . $row['id'] . ')" /></td>
</tr>';
}
?>
</table>
</form>
&#13;
答案 0 :(得分:0)
这将修复URL中的“?productid = 1&amp; command = add”并防止代码注入。 我添加了method =“post”并使用了$ _POST我还使用了intval()来确保将一个整数发送到你的函数。
<script type="text/javascript">
function addtocart(prod_id)
{
document.productform.productid.value = prod_id;
document.productform.command.value = 'add';
document.productform.submit();
}
</script>
<?php
include("local-connect.php");
include("productfunctions.php");
if($_POST['command'] == 'add' && $_POST['productid'] > 0)
{
$product_id = intval($_POST['productid']);
add_to_cart($product_id, 1);
echo 'it worked';
//header("Location:cart.php");
exit();
}
?>
<form name="productform" action="" method="post">
<input type="hidden" name="productid" />
<input type="hidden" name="command" />
<table id="product_table">
<?php
$query = "SELECT * FROM products";
$result = mysqli_query($dbc,$query) or die ("Error querying database");
while($row = mysqli_fetch_array($result))
{
echo '<tr>
<td><img id="shopping_img" src="' .$row['image'] . '"/></td>
<td><p><strong>' . $row['name'] . '</strong></p>
<p>' . $row['descri'] . '</p>
<p>Price:<strong>$' . $row['price'] . '</strong></p></td>
<td><input type="button" value="Add to Cart" onclick="addtocart(' . $row['id'] . ')" /></td>
</tr>';
}
?>
</table>
</form>