お世話になります。
現在.htaacessでパラメータをRewriteしてアドレスをスッキリさせています。
【htaccess】
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([-0-9A-Za-z]+)/([-0-9A-Za-z)]+)$ index.php?a=$1&b=$2 [L]
www.sample.com?a=test1&b=test2
を
www.sample.com/test1/test2
といった形にしています。
SESSIONのパスが現在「/」となっており、どのページでセッションを発行しても「www.sample.com」以下ならすべて有効になっているのですが、これをその階層以下でしか使えないようにする方法はありますでしょうか?
【例】
www.sample.com/test1/aaaa で発行したセッションはその階層(test1)以下でのみ有効としたい。
www.sample.com/test1/aaaa 、www.sample.com/test1/bbbb で開いたセッションは1つ目の階層(test1)以下どのページでも有効にしたい
実際に「test1」フォルダが存在するわけではないため、htaccessを設置することができず、また「test1」の階層名も様々であるため困っています。
どうぞよろしくおねがいいたします。
No.5ベストアンサー
- 回答日時:
連投失礼します。
「セッション名」を変更するという方法も考えられそうです。どちらかと言えばこちらの方が扱いやすいかも…session_name
http://php.net/manual/ja/function.session-name.php
で、OKWaveで検索してみたら案の定、既に質問がありました。
【PHP】SESSION変数の競合を避ける方法は?
http://oshiete.goo.ne.jp/qa/4139810.html
このケースでは test1 をそのままセッション名にすればいいと思います。半角英数字しか使えないことには注意してください。
No.4
- 回答日時:
なるほど、上書きですか…
・session_set_cookie_params
・session_save_path
これらを同じように両方制御する必要がありそうですね。最初の回答はあながち誤りでは無かったかも・・・
No.3
- 回答日時:
session_set_cookie_paramsの誤りでした、すみません。
ご回答ありがとうございました。
早速試してみまして、
$a = isset($_GET['a']) ? htmlspecialchars($_GET['a']) : "";
$b = isset($_GET['b']) ? htmlspecialchars($_GET['b']) : "";
にてアドレスの階層名を取得し、
session_set_cookie_params(0, '/'.$a.'/');
をsessin_start()の前に記述し、ブラウザで「http://sample.com/aaa/bbb」を叩いたところPHPSESSIDの値が「path:/aaa/」の名前できちんととることができました。
しかし次は「http://sample.com/bbb/ccc」として叩いたところ、上書きされてしまったみたいで、「aaa」で取得したPHPSESSIDが消えてしまいました…。
これをいずれも残す方法はありませんでしょうか?
ショッピングサイトを作っており、「aaa」の部分にショップ名が入り各階層ごとにショッピングカートの内容を保持したいと考えています。
上記の場合、カート内が混合することはないもののaaaのお店に行ったあとbbbのお店に行き、再度aaaのお店に戻ってきた時カートが空になってしまう問題がでてしまうかと思います(;_;)
どうぞよろしくおねがいいたします。
No.2
- 回答日時:
session の仕組みとしてcookieを使う場合、有るページからsession cookie をブラウザに送ると、ブラウザ側では、その時の付帯情報として付いてきたcookie_path 設定に基づき、現在のパス階層で有効なcookieのみを次のリクエスト時に送信しています。
なので、上位階層のパスのページにリンクで飛ぶと、下位階層で設定したセッション情報がブラウザから送信されずにセッション切れを起こしたりします。path_info を利用する場合、階層によらずに統一したいので、cookie_path を / に設定することが多いですけど、パスごとに個別制限したいときは、これを設定します。
php では、セッション用ならphp.iniの session.cookie_path を設定することになります。
ページのpath_infoによって変更するなら、ページのパスを$_SERVER["REQUEST_URI"]や$_SERVER["PATH_INFO"]などで判定したうえで、以下の関数で設定してから session_start() します。これをindex.phpのトップで行えば良いと思います。
session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
http://jp.php.net/manual/ja/function.session-set …
No.1
- 回答日時:
要はindex.phpがフロントコントローラである、ということですよね。
ならばそこで session_save_path 関数による分岐を行ってみてはどうでしょうか?但し毎回 session_start 関数より前に実行しなければならないことに注意してください。PHP Manual - session_save_path
http://www.php.net/manual/ja/function.session-sa …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- サーバー Windowsサーバでグループを検索したい 1 2023/04/17 15:30
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- Excel(エクセル) Excelの置換が上手くいかない Microsoft® Excel® 2019 MSO (バージョン 5 2022/08/17 22:26
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- システム ホームページの仕組みについて 3 2022/08/16 14:33
- その他(プログラミング・Web制作) ZWCAD CUIXとLISPの関係について 1 2022/09/28 03:07
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP session_destroyとsession...
-
$_SESSION 有効期限をブラウザ...
-
セッション機能が使えない
-
session_start();について
-
DOCOMOのセッションについて
-
GETでの変数の受け渡しについて
-
フォントの色を変えるには?
-
PHPのif文でその処理を途中で抜...
-
リンク先を隠す方法はないでし...
-
copy() で属性保存
-
onedrive にexcelファイルをア...
-
「クラス関数」「メンバ関数」...
-
別PHPファイルに変数を渡す
-
VBSの「MsgBox」について
-
3つ以上の論理積は利用可能なの...
-
「@$変数」の「@の意味は?」
-
CFileDialogの最初のディレクト...
-
BASP21メール送信(SMTP-AUTH認...
-
htmlをphpにするにあたってデメ...
-
openCVの超解像処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP session_destroyとsession...
-
$_SESSION 有効期限をブラウザ...
-
jqueryの$.ajaxでPHPに値を渡し...
-
セッションファイルの場所
-
セッションのクッキー有効期間...
-
session_set_save_handler の実...
-
セッション部分のインクルード
-
リロード・ページビューの判定
-
phpのセッションについて
-
SESSIONを階層ごとに分けるには?
-
自動ログアウト
-
phpでのログアウトについて
-
「セッション管理用のクッキー...
-
PHPの引数を含んだURLについて
-
session_start();について
-
SESSION の受け渡し
-
PHPでのセッション管理について
-
セッションが変数が取得できません
-
session_start出来ません。
-
ログインしたページで、ある処...
おすすめ情報