从JS传递变量并在PHP中使用它是行不通的

时间:2014-12-16 18:13:22

标签: javascript php html shopping-cart

我正在开发onlineshop.php页面,该页面应首先向用户询问他的购物车名称,这是使用java脚本的提示完成的。

我会将代码粘贴给您并清楚地解释问题

首先这是js代码:

function myFunction() {
    var person = prompt("Please enter Cart Name");

    document.getElementById("person").value=person;
    document.getElementById("form").submit();

   // if (person != null) {
   //     document.getElementById("demo").innerHTML =
     //   "Your Cart Name is " + person;
    //}
}

它要求用户输入他的购物车名称。然后,页面中有很多产品,每个产品都有自己的形式添加到购物车中。这是表单的代码:

<form id='form' method='post' enctype='multipart/form-data' style='display:inline;'  >

   <figure>
  <img src='eye.jpg'  alt='The Pulpit Rock' width='130' height='130' style='left:00px;top:00px; '>
  <figcaption style='text-align:center;'><b>".$info['Pro_Name']."</b><br/>".$info['Price']."<p style='color:green;'>".$info['Availability']."</p><p style='font-size:13px;display:inline'>Quantity:</p>
  <input type='number' name='quantity' min='1' max='10' style='width:3em;'></figcaption>
</figure>

<input type='hidden' name='Pro_ID' value=".$info['Pro_ID']." />
<input type='hidden' name='Price' value=".$info['Price']." />
<input type='hidden' name='Pro_Name' value='".$info['Pro_Name']."' />
<input type='hidden' name='Availability' value='".$info['Availability']."' />
<input type='hidden' id='person' name='cart_Name' />


<input name='button1' type='submit' value='Add To Cart' style='width:8em;   ' />

</form>

我尝试隐藏变量 person ,以便我可以在查询中使用它,将购物车名称插入数据库。

这是查询:

if ( isset($_POST['Pro_ID'], $_POST['Price'] , $_POST['Pro_Name'] ) ) {
    $qry="INSERT INTO shopping_cart(Cart_Name,Pro_Name,Pro_ID,Price) VALUES ( '".$_POST['person']."','".$_POST['Pro_Name']."',".$_POST['Pro_ID'].",".$_POST['Price'].")";
                $result = mysql_query ($qry );

            }

点击添加到购物车

时出现的错误
Notice: Undefined index: person in C:\xampp\htdocs\sw\onlineshop.php on line 9

2 个答案:

答案 0 :(得分:3)

发现差异:

document.getElementById("person").value=person;
                         ^^^^^^--- your ID

<input type='hidden' id='person' name='cart_Name' />
          your ID ---^^^^^^^^^^^       ^^^^^^^^^^---what gets submitted to the server

你想要$_POST['cart_Name']。在提交表单时,JS端变量名称/ ID完全无关紧要。仅使用name

请注意,您很容易受SQL injection attacks攻击。请高枕无忧。你的服务器很快就会出现pwn3d,让你的问题无法解决。

答案 1 :(得分:0)

如果要在POST操作中将其用作索引,则name属性应为person。

鉴于您的代码现在的方式,查询中的索引名称应为&#34; cart_name&#34;