私が抱えている問題は、ページ間のナビゲーション中にセッション変数の1つが保存されないことですが、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'];