PHP没有从jscript获取变量

时间:2014-12-03 18:44:34

标签: javascript php jquery html

我试图创建一个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>&#36;' . $row['price'] . '</strong></p></td>
			<td><input type="button" value="Add to Cart" onclick="addtocart(' . $row['id'] . ')" /></td>
			</tr>';
		}
	?>
	</table>
	
	</form>
&#13;
&#13;
&#13;

1 个答案:

答案 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>&#36;' . $row['price'] . '</strong></p></td>
			<td><input type="button" value="Add to Cart" onclick="addtocart(' . $row['id'] . ')" /></td>
			</tr>';
		}
	?>
	</table>
	
	</form>

相关问题