我遇到的问题是在页面之间导航时没有保存会话变量之一,但是当我尝试通过 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'];