【PHP】セッションについて語ろう!【PHP】
■ このスレッドは過去ログ倉庫に格納されています
ブラウザを閉じたらセッションの効果がなくなるのって、
ブラウザを閉じることでクッキーを消しているからなのですね。。
知らなかったよーーーーうわーーーん [2ch公式広告]
一瞬、ハーバーライフと間違えるところだった。。
違うよ、コレは。
ヤフオク関連の最強情報
これを知らずして、ヤフオクで稼ぐことは出来ない。(キッパリ)
http://2ch2.net/.l?=jd2e いや、つうかさ、
>セッション管理のヘルパとかライブラリ
とかって、何に対してして欲しいのさ?
Perlやってた俺としては、PHPは十分便利だと思うけど? クッキーは1024byteまでしか使えないんじゃなかった? 4096bytes/cookieで特定のホストかドメイン毎に20cookieまで。
さらに携帯では制限付くよ。
というかDoCoMoがいつまでもCokkie非対応で
そろそろ機能が付くという話も聞いた気がしたがサイトに情報なかったな。
最近、セッションが勝手に切れるんだけど、
同じ現象を経験した人いる? >>798
俺が作ったショッピングサイト。
ショッピングカートの中身が消えるという現象が起きてる。
タイミングは不明。
商品を10、20個入れても消えない時もあるし、3個で消えた事もある。
セッションが破棄されるタイミングがさっぱりわからないんだ。 hpのセッション管理について、動作が不明な点があります。
(現象)
1. ログイン実行、ログイン成功ならばクッキー変数にセッションIDを設定します。
2. しばらくログインしたままで画面を開いていました。
ガベージコレクションが実行されてプログラム内で設定したセッション変数が削除
されました。
3. ログアウトの処理を実行せず、画面を閉じて終了しました。
明示的にsesson_destroy()は実行していません。
4. 再度ログインしました。その後設定されているセッション変数を確認したところ、
上記1.で設定していたセッションIDと同じ値が設定されました。
2.でガベージコレクションが実行されてセッション変数が
削除されたはずなのに、再度ログインすると同じ以前と同じセッションIDとなる
理由がわかりません。
セッションIDはガベージコレクション実行後でも削除されないのでしょうか。
PHPでセッションIDが変更されるのはどのようなタイミングなのでしょうか。
もしかすると私のphpのセッションの仕様理解不足な点があるかもしれません。
わかる方がおりましたら教えてください。 すみません、1行目入力ミスしました
× hpのセッション管理について、動作が不明な点があります。
○ phpのセッション管理について、動作が不明な点があります。
>803
>ガベージコレクションが実行されてプログラム内で設定したセッション変数が削除されました。
何かでちゃんと確認した?ガベージコレクションがセッションを軒並み
削除してしまうなんてことはないはずだけど 質問なんだけどauサイトでのセッション管理はURLにセッションID埋め込む方法でOK?
docomoとソフトバンクは上手くセッション管理できてるけどauだけ何故か上手くいかなくて。。 >>803
セッション固定脆弱性と同じ原因でしょ。
この場合はセッションIDが悪意を持つだれかが用意したものではなくて、
クッキーや履歴の一部(クエリ文字列でセッションIDを引き回した場合)に古いセッションIDが残っていて、それが利用されたと考えられる。
この動作には害はないけどセッション固定攻撃されると危険なので対策を施した方がいい。
>>806
auはクッキー使える PHPに限ったことではないんですが、タブブラウザとかで1つのwebアプリに
ログインした状態でもう一つタブを作ると、同一セッションになってしまいますよね。
これを回避するブラウザ、もしくは対策はないでしょうか。
(全てのページのURLにセッション名を埋め込むとかは面倒なのでしたくないです)
セッションの仕組みを考えれば分かる事だろう?勉強不足。 あーはいはい。余程悔しかったんだね。
そんな書き込みしてる暇あったら少しはお勉強しなよ僕^^
まずは、日本語のね(笑) windowsで開発するときのセッションファイルってどこにあるん? XPだと
C:\WINDOWS\Temp
ほかの環境は試したことないからわからん //$_SESSION['abc']; は前ページで123を代入
//ここから
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 42000, '/');
}
session_destroy();
echo $_SESSION['abc'];//123
と表示したいのですが何か方法はないのでしょうか?クッキーとか使わずに。 要するにセッションを破棄した後で、そのセッションに入っていた変数を参照したい、ということなら、
$_SESSION = array();
の直前に
$temp = $_SESSION;
とかしておいて、最後の
echo $_SESSION['abc'];
の代わりに
echo $temp['abc'];
とかすればよいのでは?
はずしてたらスマソ
質問です。mixiってSSLじゃないけど大丈夫なんですか?
これが、楽天やアマゾンだと
普通の商品ページ→http
しかし、購入後の清算ページ OR 会員登録 OR 会員登録変更などは
全部httpsです。
これって、とりあえずセッションIDを変えてるってことですよね mixiなんてプレミアムの申し込み以外は個人情報入力するわけでもないのにSSL化する意味あるのか
2ちゃんで名前欄にコテハン入力するのと同じレベルだぞ PHP.iniのsession.save_handler に、独自のセッションハンドラを定義する
方法はあるのでしょうか?
セッション変数をDBに格納したいので独自にハンドラを書きたいのですが、
事情によりスクリプト内でsession_set_save_handler関数は使えないんです。 >>822
独自のセッションハンドラを、標準的なセッション(ファイルベース)と挙動が変わらないように実装するのは意外に面倒。
セッション変数をDBに格納したい理由が分からんが、session_start()を呼んでいる前後でsession_id()をDBに登録するのでは駄目かな? 問い合わせフォームのページ遷移で、自分のページから来たことを確かめるためにセッションを使っています。
input type="hidden" name="token"
他人のブログ等見ると、
■session_idを使う方法
$token = hash('sha256', session_id());
↓
if ($_POST['token'] != hash('sha256', session_id())) {
■$_SESSIONと照合する方法
$_SESSION['token'] = rtrim(base64_encode(openssl_random_pseudo_bytes(32)),"=");
↓
if ($_SESSION['token'] != $_POST['token']) {
と2種類(他にも?)見られますがどちらがいいのでしょうか?
htmlspecialcharsはここでは省略しています。 >>824
session_idを使う方法は新たなセッション変数が不要なので最も簡便だが、
フォームとcookieを比較されたらすぐにバレるので、
バリデーションを保証する要素としては使わない方が良い。
$_SESSION['token']を作る場合は、いつどこで作るのか、
それが既に定義されていた場合のフローなどを考える必要がある。
よって、ページ遷移元を保証するだけならsession_idでも構わないが、
バリデーションを保証する目的で$_SESSION['token']を作る価値はある。 >>825
詳しくありがとうございます。
それぞれ単独で説明する記事は見られるのですが比較する記事が見つからなくて迷ってました。
助かりました。 >>826
セキュリティに対する意識は単価の高い案件に携わるには必須だよ。
ガンバレ! 誰でも簡単にネットで稼げる方法など
参考までに、
⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。
グーグル検索⇒『半藤のブブイウイウレレ』
FBZK1A4NUV プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
5TNTB ■ このスレッドは過去ログ倉庫に格納されています