0

我遇到的问题是在页面之间导航时没有保存会话变量之一,但是当我尝试通过 php 文件直接访问页面时它确实被保存了。例子:

当我以这种方式访问​​页面时:“http://www.domain.com/products/honey-4-dozes”然后离开它,这就是 $_SESSION 数组的内容:

Array
(
    [curr_sku] => honey4doz
    [username] => testuser
    [firstname] => John
    [lastname] => Doe
)

但是当我以这种方式直接访问页面时:“http://www.domain.com/product.php?product=honey-4-dozes”然后离开它,这就是 $_SESSION 数组的内容:

Array
(
    [curr_sku] => 
    [username] => testuser
    [firstname] => John
    [lastname] => Doe
)

我还在检查会话 ID 的任何更改,但 ID 在整个过程中不会更改。事实上,在不同页面上创建的用户名、名字和姓氏字段可以很好地在页面之间传递。任何想法为什么会发生这种情况?

$_SESSION['curr_sku'] 变量在 product.php 页面上创建。

这是我使用的重写规则: RewriteRule ^products/(.*+)$ product.php?product=$1 [QSA]

这也是我使用 session_get_cookie_params() 获得的会话 cookie 参数的内容:

{
    [lifetime] => 0
    [path] => /
    [domain] => 
    [secure] => 
    [httponly] => 
)

设置变量的部分代码:

$result = mysqli_query($link,"SELECT * FROM products WHERE url = '$curr_product'");
$row = mysqli_fetch_array($result); 
$_SESSION['curr_sku']=$row['sku'];
4

1 回答 1

0

尝试使用:

对于http://www.domain.com/products/honey-4-dozes

RewriteRule ^products/(.*+)$ product.php?product=$1 [QSA]

对于http://www.domain.com/products/product=honey-4-dozes

RewriteRule ^products/product=(.*+)$ product.php?product=$1 [QSA]

我希望,我能帮上忙。

于 2015-03-28T12:07:41.060 回答