【发布时间】:2012-12-19 13:38:13
【问题描述】:
我遇到的问题是其中一个会话变量在页面之间导航时没有得到保存,但是当我尝试通过 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 页面上创建。
这是我使用的重写规则: 重写规则 ^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'];
【问题讨论】:
-
显示设置会话变量的代码
-
问题存在于PHP代码中,因为这次重写对会话变量没有任何影响
-
上面我刚刚添加了设置变量的部分代码。
-
另外,如果这是一个 PHP 问题,为什么只有当我通过重写的 URL 访问页面而不是直接访问它时才会发生这种情况?
标签: .htaccess mod-rewrite session-variables php