2017-02-19 56 views
2

我无法将查询结果传递给会话变量,我认为最简单的方法是通过Javascript。我有查询结果显示,但他们不会传递给会话变量。在每个查询结果行的末尾,我有一个添加按钮,它将激活JS函数以添加到会话变量中。将查询结果的段传递给使用Javascript的会话变量

查询结果:

echo '<tr><td>'.$products['Name'].'</td><td>£'.$products['Price'].'</td><td>'.$products['Category'].'</td><td><img src="'.$products['Image'].'" width=100px /></td><td>'.$products['ProductID'].'</td><td><button onclick="setProduct('.$products['ProductID'].')">Add to Basket</button></td></tr>';

JS功能:会话变量的

function setProduct(x){ 

var productID = x; 
'<%Session["ProductID"] = "'+$products['productID']+'";%>'; 

代码显示内容:

echo $_SESSION['ProductID']; 
+0

Javascript无权访问会话变量...? – junkfoodjunkie

回答

0

$_SESSION是一个服务器端可变。你很可能想要设置一个$_COOKIE。这些可以在客户端访问。

0

除了发布的答案,您可以创建一个jQuery发布请求(或者您可以使用AJAX)并将JS会话作为值发送到PHP文件,您可以在其中访问该值并创建相应的PHP会话。

比方说,你的JS功能:

function setProduct(x){ 

    var productID = x; 
    '<%Session["ProductID"] = "'+$products['productID']+'";%>'; 

    // ... 

    $.post('example.php', { session_name: YOUR-SESSION-NAME, session_value: YOUR-SESSION-VALUE }); 

使用example.php

if (isset($_POST['session_name']) && isset($_POST['session_value'])) { 
    $_SESSION[$_POST['session_name']] = $_POST['session_value']; 
} 

这不是考虑到安全问题,你可能面临。发送之前,您应该加密数据。

相关问题