标头重定向后会话变量丢失

时间:2013-03-06 23:36:57

标签: php session session-variables

标题重定向后会话变量丢失甚至我使用session_start(); in All Pages

这里是我的代码..

<?php 
session_start();
$id=$_REQUEST['id'];
$pid=$_POST['pid'];
$_SESSION['pid']=$_POST['pid'];

添加到购物车功能

include("cart/functions.php");
if($_REQUEST['command']=='add' && $_REQUEST['id']>0){
$id=$_REQUEST['id'];
addtocart($id,1);
header('location:shoppingcart.php');
exit();
}

点击此按钮后$ _SESSION ['pid'] = $ _ POST ['pid'];`从所有页面消失?

<input type="button" class="button1" value="Add To Cart" 
 onclick="addtocart(<?php echo $row3['id']?>);" />
</div>
</div></form>

2 个答案:

答案 0 :(得分:1)

header('location:shoppingcart.php');是强制重定向,发生这种情况时没有POST,因此行$_SESSION['pid']=$_POST['pid'];将无效。如果您必须进行无Cookie会话,请查看use-trans-sidhttp://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid

答案 1 :(得分:0)

您可能会在每个请求中设置$_SESSION['pid'] = $_POST['pid'] - 即使您的POST中甚至没有pid

尝试更改此

$_SESSION['pid']=$_POST['pid'];

到这个

if (isset($_POST['pid'])) {
  $_SESSION['pid'] = $_POST['pid'];
}