【问题标题】:Passing variable from JS and using it in PHP isn't working从 JS 传递变量并在 PHP 中使用它不起作用
【发布时间】:2015-02-15 03:40:30
【问题描述】:

我正在处理 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

【问题讨论】:

    标签: javascript php html shopping-cart


    【解决方案1】:

    找出差异:

    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,从而解决您的问题。

    【讨论】:

    • 非常感谢您,问题解决了.. 但现在我有一个小问题,当我第一次按添加到购物车时,它被成功添加,但是我添加到购物车的第二个项目我将数据库中的字段 cart_Name 设为空!我想我必须再次在提示消息中输入它,但我只想输入一次,并且该值会为我添加的所有项目存储
    • 你能解释一下你的意思吗?我想在 php 部分中定义一个 only 分配一次的变量,现在将尝试它希望它有效
    • 没有工作,因为如何变量只能分配一次,如果我把 $flag 变量它的值将在我运行时不断更新代码
    【解决方案2】:

    name 属性应该是 person,如果你想在 POST 操作中使用它作为索引。

    鉴于您的代码现在的方式,查询中的索引名称应该是“cart_name”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多