如何避免重复上次会话php session_start();

时间:2014-01-15 06:40:28

标签: php session

我正在使用会话将产品存储在我网站的购物车中。但是当我使用购物车中的现有商品登录时,它会将购物车中添加的最后一件商品的付款加倍。这是因为当我登录时它将再次启动一个会话(重复上一个会话)。我不知道如何解决这个问题。

在cart.php代码中

session_start();

if (isset($_GET['add'])) {

    $quantity = mysql_query('SELECT id, quantity FROM products WHERE id='.mysql_real_escape_string((int)$_GET['add']));

    while ($quantity_row = mysql_fetch_assoc($quantity)) {
        if ($quantity_row['quantity']!=$_SESSION['cart_'.(int)$_GET['add']]) {
            $_SESSION['cart_'.(int)$_GET['add']]+='1';
        }
    }

    header('Location: ' . $_SERVER['HTTP_REFERER']);

}

`
init.php for login users
`
session_start();

require 'database/connect.php';

require 'functions/general.php';

require 'functions/users.php';

$current_file = explode('/', $_SERVER['SCRIPT_NAME']);

$current_file = end($current_file);

if (logged_in() === true) {
    $session_user_id= $_SESSION['user_id'];
    $user_data = user_data($session_user_id,'user_id','username','password', 'first_name','last_name','email','type','allow_email', 'profile');
    if (user_active($user_data['username']) === false) {
        session_destroy();
        header('Location: index.php');
        exit();
    }
}

$errors=array();

1 个答案:

答案 0 :(得分:2)

你可以做这样的事情

if (session_status() == PHP_SESSION_NONE) { //if there's no session_start yet...
    session_start(); //do this
}
else{
   //do other things...
}

<强>参考http://www.php.net/manual/en/function.session-status.php