Session管理してる?
PHP3だとSession使えないから、id&passをhiddenで吐き出している。 DBで一意のsessionidを作ってやりゃーいいんだけどExpireとか めんどくさい。 ASPやPHP4ならSession管理楽だよね。 厨房質問でごめんなさい。 >ASPやPHP4ならSession管理楽だよね。 ASPやPHP4が、自分に代わってhiddenのパラメータなり(POSTの場合)、 GETパラメータなりを管理してくれてるのでしょうか? tcp/ipの接続を持続してるとか、勝手にクッキー使ってるってわけでは ないと思うのだけど、どうやってSessionを実装しているのかなあ、と疑問 に思ったので。 >>3 ASPはcookie投げてるという話を聞いたなあ。 僕はperl + Apahce::Session with cookie ばっかだから知らないけど。 >>3 デフォルトで勝手にクッキーを使うよ。クッキーを使えない端末の ときは、configureの時に--enable-trans-sidしてあれば 全部のリンクにsession idをつけてくれる。 ただ、<a href=だとつくんだけど<a taskだとだめなんだよなぁ〜 というわけでHDMLの場合は自分でつける必要アリ >>4 Apache::Sessionってどうよ? セッションのガベージコレクションの機能とかないんじゃなかったっけ? 俺は1リクエスト毎にデータベースに書きに行くのがすごくうざくって、 ちょっと触っただけでやめちゃったけれど・・・ Session管理は結局どれも内部でクッキーかGET(orPOST)パラメータですか。 そりゃそれ以外ないよな。 あとは携帯電話の固体IDだけど、503iから使えるようになった奴ですが、 210iではどうだろう? >>6 セッションタイムアウトは自動でやってくれないね。 タイムスタンプのフィールド用意しておいて、cronで削除が一般的かな。 mod_perl下で使えば、かなり使えると思う。 >>8 言う事なくなっちゃった(笑) そういや、mod_perlのスレないね...。ま、perl板でも繁盛してなかったけど。 >>7 あと、URLにセッションIDを埋め込む方式があるね。 携帯とPCを両用したいときとかによくつかってます。 >あと、URLにセッションIDを埋め込む方式があるね。 >携帯とPCを両用したいときとかによくつかってます。 PATH_INFOですか? それもGETパラメータ(URL)の一種だとは思いますが、 QUERY_STRINGと比べて特に携帯だからPATH_INFOを使う 意味も無いような、、、 逆にPATH_INFOでも使う分には同じなのでどちらでもいいし、 QUERY_STRINGやPOSTパラメータはシステムによっては 自動的に解析される部分に入ってしまうだろうから、それらの 仕組みとぶつからないというメリットかな? PHP4セッション管理の詳しく説明してる サイトってありますかねー? >>13 うぉぉぉ!まさにコレ! http://www.phpbuilder.com/columns/ying20000602.php3?print_mode=1 MySQLでセッション管理したかったんだよねーー!!ロードバランサは (いいものになると)結構お値段が張るので、TurboLinux ClusterServer とかを使ってWWWのクラスタリングをしたかったんだけど、セッションを どーしよーかと途方に暮れてたところでした! 電動ナナシさん、サンクス!これからも有益な情報をお願いしますです! セッション管理はPostgresでは難しいのかー? MySQLの方がいいのかな? >>10 PATH_INFOじゃなくても、mod_rewriteで ごにょごにょやる手もあるよ。環境変数として渡したり。 >>15 webのセッション管理にDBMSって関係有る? PHPのインターフェースの部分が、DBMSによってセッション管理が 用意されている/いないの差があるということかな? おれはPHPでないので知りませんが。 セッション管理は頻繁に発生する、トランザクションのような一貫性保証は 不要、ということで、PostgreSQL のような重装備の RDBMS よりも MySQL の ような軽くて高速なデータベースが向いているということでしょ。 すでに PostgreSQL があってそれを使いたいということなら、別にそれでも いいでしょ。セッションハンドラは別途書かないといけないというのはどの RDBMS でも一緒。 PHPLIB+MySQL+PHP3.0.9でセッション管理してます。ただ、レンタル サーバーなんで都度requireしなければいけないのですが... しかし、国際版PHPじゃないのがつらすぎる。Perl+DBIのほうが開発早かった かもしれんッス >>19 常に必要ってわけじゃない。 Web ページ間で変数を引き渡す手段が必要なときに有用ってだけ。 >>20 3.0.9 って思いっきりセキュリティホールがあるじゃん。 バージョンあげてもらうついでに国際化版にしてもらおう。 それが無理なら Perl を使ったほうがマジでいいぞ。 ちょっと質問。 よくユーザ登録のページで情報を入力しsubmitして 確認画面がでますよね。でソースを見ると入力内容をHidden で渡してるものもあれば、Hiddenを使用していないものもあります。 Hiddenを使用せず渡すのは、s_id見たいなものを をキーにして入力内容をDBに毎回insertしてページ間でデータが 渡っているのでしょうか?それとも別の方法があるんですかね? 疑問だったので・・・。 またはipを基に一時ファイル作成とか…。 まぁ普通はCookieだと思うが cookieに依存すると、専用端末や携帯電話やcookie offに対応することに なったときに面倒っすよ。趣味でPCだけ相手にしているときにはいいけど。 >>27 ソース見てhiddenがないのはどうなってるのかって聞いたから例としてcookie と言ったまで。 そりゃ状況によって方法は変えますよ、わたしゃ。 >>23 Servlet ではセッションはサーバのメモリに保持する。 ファイルやDBはオーバーヘッドがあるのであまりないね〜。 PHP4 はファイルですよね(よく分からんけど) >>24 クッキーに情報自体を保持するのは、一般的?に セッション管理とは言いにくいような。。。 # セッションIDは別 >>30 セッション終了時に消えるクッキーをセッションクッキーって 言うの知らないの? >>31 怒ってる〜? そうだね。レスポンスヘッダに設定する有効期限を無しに すればセッションが続く限りクライアントが情報を保持するよね。 んで、そのセッションクッキーってのを使うと セッション管理してるということになるの? hidden と同じでクライアントに投げたら投げっぱなしなので 管理とは言いがたいような気がします〜。 毎回切断される HTTP で継続して情報を保持するために サーバでランダムな ID を発行し、それをキーにクライアントと やりとりを行う。 それをセッション管理と言う。 >>32 そのやり取りって、クッキー使ってんじゃないの? どっちにしてもcookie使わない方法はないと思うが。 もちろん、擬似的なセッション維持だとは思うけど。 データをどこにもつかって事だと思うけど、 cokkieはドメイン毎に4Kまでの制限があるから、 ふつうサーバーでデータは保持する。 クッキーだけでなく、サーバで発行したランダムなIDは次の いづれかでやりとりされる。 ・クッキー ・get リクエスト ・put リクエスト このIDを普通はセッションIDっていうよね。 最近の Java や PHP では意識はしなくてもいいけど。 >・クッキー >・get リクエスト >・put リクエスト 結局hidden以外はcookieじゃん。 URL Rewrite を忘れてる。<A HREF="/a/b/c;98A30x7"> みたい なの。現行のステートマネージメントは ・Cookie の受け渡し ・HIDDEN フィールド ・URL Rewrite で行われている (Servet の話だけど)。 ちなみにセッション ID がランダムに振られるシステムは設計が おかしい。 間違えた。。。 put は post です。。。 ・クッキー <- Cookie の受け渡し ・post リクエスト <- HIDDEN フィールド ・get リクエスト <- URL Rewrite 私の表現がおかしい〜? URL Rewrite は クッキーが使えないときにAP サーバが セッションIDを URL に Rewrite するっていうものだよね。 最近、セキュリティ的に問題があるので使ってはいけないというのが 良く言われてるけど。 セッションIDがランダムに振られるのがおかしいというのはなぜ〜? 最近はAPサーバにセッション管理が実装されてるから あまり意識してないもので。。。 一意性の問題? そう、一意性の問題。普通はシーケンシャルに採番して一意性を 維持したままシャッフルすると思われる。ちょっと揚げ足を取っ てみただけ。 現行のステートマネージメントメカニズムは、どの方法も SSL と 組み合わせないとセキュリティ的に問題ありだね。というか そんなの Web の常識だったはずなのに、なぜ突然ひろみちゅが 騒ぎ始めたのか分からんよ。 URL Rewrite/HIDDEN フィールド ソースを見れば一目瞭然。URL 欄にも表示される。ジャンプ先 サイトでは Referer ヘッダで参照可能 (ブラウザの種類と バージョンにもよる)。自サイトを SSL 化しても Referer ヘッダは漏れてしまうかも (なりすまし接続は無理だろうが)。 Cookie 丸見えでない分 URL Rewrite/HIDDEN フィールドよりまし だが平文であることには変わりない。プロキシサーバなら 余裕で盗める。期限付きのはファイルで残る。 # 昔、クライアント側の IP アドレスを使ってセッション ID # にハッシュかければセキュリティもバッチリでは? と発明 # しかけたが、程なくプロキシの存在を忘れているのに気づ # いた。 >>30 クライアント側のクッキーにはIDのみで、 セッション情報はサーバ側に保存されるので セキュリティ的には問題ない と、どっかで読んだ覚えがあるんですが。 セッション ID を盗まれると言うことは、意味的にサーバサイドの セッション情報ごと盗まれるのと等しい。ただ、情報が丸見えでは なく、どのような情報か想像しずらいという人間的な利点があるだけ。 ユーザ認証後のセッション ID を盗まれたら、アプリケーションを 乗っ取られたのと事実上同じ。セキュリティを確保したければ SSL と併用せれ。 セッション ID を盗まれると言うことは、意味的にサーバサイドの セッション情報ごと盗まれるのと等しい。ただ、情報が丸見えでは なく、どのような情報か想像しずらいという人間的な利点があるだけ。 ユーザ認証後のセッション ID を盗まれたら、アプリケーションを 乗っ取られたのと事実上同じ。セキュリティを確保したければ SSL と併用せれ。 >43 ID+有効期限を暗号化して発行すれば、 多少マシになる。 >46 なんでもいいじゃない? 暗号化も複合化もサーバーでやるんだから 実際にやってるけど、SIDとログインタイムをある形式にフォーマットして BASE64で暗号化して発行。クライアントから返されるSIDは形式のチェックで先ずはじく。 仮に、クッキー盗まれても有効期限内しか使えないし、 まあ、解読も可能だろうけど、一定期間でキーやアルゴリズム変えれば、 それなりに実用的だと思う。 なんか間違ってる? Crypt::Blowfishで暗号化でした つくったのはおいらでないので間違ってるかも いくら強力な暗号化アルゴリズムを使っても、キーがサーバ側に あったら意味ないでしょ。盗んだ側にとっては ID が暗号化され ているかどうかなんて関係なく、盗んだ Cookie をそのまま送り 返せばよいのだから (だから >>39 でクライアント側の IP ア ドレスをキーにハッシュかけようとした)。 あ、俺が考えてるのは中継サーバ等で Cookie が盗まれた場合ね。 総当りでのセッション ID 盗難防止という話だったら暗号化だけで 効果は高い。んーでも総当りなんて目立つ方法で盗もうとする莫迦 いるか? だから、わざわざセッション ID を暗号化してもたいした 効果がないと思っただけ。 間にProxyが入ろうがどうしようが クライアント固有の識別ID(macアドレスとか)を 簡単に取れる手段があるといいんですがねえ。 プライバシー的には問題おおありですが。 そういうの、MSならやってくれ・・・ないか。さすがに。 proxyの問題を考えなければ簡単なんだけどね>セッションID盗難対策 503iのような、固体識別番号取得タグをどのブラウザも実装してくれれば 話は簡単だけれども。 確認が入るのでプライバシー的な問題も無いと思うし、MSさん実装して くれまいか。 だめ。SSLで守れたと思っちゃだめ。はー いま(さらながらに)騒がれてるやつあるよね。 あれは相当驚異だよ。たぶん完全に防げてるサイトなんて数えるほど。 DoCoMoがNULLDOCOMOGW(だっけ?)を一般ユーザーに開放してくれればいいのに… >>54 SSL とサイトへの侵入とがごっちゃになってないか? それとも SSL のポートを使って侵入 or 成りすましという話か? Cookieは楽々盗めるって話。進入は無関係だけど… 言っちゃってもいいかどうか解らん。広めるならもっと思いっきり広めないとだし。 実は知ってる人にはあたり前のことではあるが、C****S***-S********のことです。 解っててもそうそう防ぎ切れないもんでおれも困ってるの。もうここまでにしとくね。 きっとしかるべき機関なり人がしかるべきところで注意喚起してくれることを期待して。 被害立証できるんだったらオフラインでなんかすりゃいいじゃん。 SSL で Cookie 盗んで、なりすましまで出来るものですか? マジできたら今まで言ったこと撤回するわ。 GETをはじく方法ってありますかね? たとえばxxxx.php?id=123がありid部分を違う数字に 変えれば違う情報が表示されます。 直接入力された時は処理できないようにしたいのですが・・・。 直接って事は自サイト等からリンクされてる場合は良いの? PHP4 のセッション変数って、オブジェクト(つまりクラスのインスタンス)は格納できるの? >>64 サーバ側で何使ってるんだ? CGIならREQUEST_METHODを見る ServletならdoGet()とdoPost()で処理を分ける >>64 Apache 使ってるなら httpd.conf か .htaccess で GET がはじけるだろう。まにあるみれ。 >>66 セッションの登録について PHP4 マニュアルには 「変数名を保持する文字列または変数名からなる配列」 ってあるね。 Java だと Serializable なオブジェクト(Javabean とか)は 出来るのにね〜。 >>69 レスありがと。 あきらめきれずこんなテストコード書いたらちゃんとカウントアプしてくれた。 <?php class testFoo { var $count; function testFoo($i) { $this->count = $i; } function inc() { $this->count++; } function hello() { $this->inc();; echo("hello, " . $this->count . " times.\n"); } } session_start(); if (!isset($obj)) { $obj = new testFoo(0); session_register("obj"); } ?> <html> <h1> <?php $obj->hello(); ?> </h1> </html> /tmp覗いたら obj|O:7:"testfoo":1:{s:5:"count";i:3;} となんとなくシリアライズしてくれてる風味。 >>69 そのマニュアルの記述は、session_register(); の引数は 変数を表す文字列かその配列だよという意味だったんだね。 PHP4で各ユーザのセッションファイル(sess_*)の特定は セッションIDの取得すればよいのですかね? たとえばxxx.php?session_idのような感じでOKかな? じゃ、Hiddenで渡すとき、nameは何になるのでしょうか? 疑問だったので・・・・・。 >>64 例: $value=$HTTP_POST_VARS["hoge"]; これだとGET送信されたhoge(パラメータ名)の値は取れません。 phpの設定によっては使用できませんが。 >>72 セッションIDって今まで意識してなかったけど、取得しないとなにか不都合あるの? >>74 各ユーザのセッション情報を特定するということじゃないのかな? 例えば、各ユーザでカスタマイズされたページを出力 するとか・・・。 >>74 必要性を感じないなら必要なし。 複数のHTTPセッションに渡ってクライアント情報を維持したいときに便利。 >>76 PHP4 でしょ? だったら session_start() するだけて session_register() した変数をとりこんでくれるんだから スクリプト側は session ID を意識しなくていいじゃん。 ああ、そうね。書いてから気づいたよ。 セッション終わっても情報を取っときたいってことね。 PHPのセッションって セッションタイムアウトってゆー概念がないの? (ASPにあるよーなやつ) >>79 あるよ〜。設定はphp.iniじゃなかったかな?覚えてなくてごめん。 >>82 消える確率とか設定あったよね。どうしてランダムなのか理解に苦しんだ。 セッション管理って大丈夫? 二つのページを同時にアクセスした場合とかどうよ セッション情報に「前のページ」とか残して、 それを信用して組んだりできないよね... >>84 >二つのページを同時にアクセスした場合とかどうよ 二つは別セッションになるんじゃないの? >>84 >セッション情報に「前のページ」とか残して、 >それを信用して組んだりできないよね... セッション管理が大丈夫かどうかとは関係ない気が >>85 それは、IEでなんか設定したときだけじゃない? クッキーに関しての質問です。 クッキーに配列を保存できますかね? 例えば、 $data=array( "a" => "hoge1", "b" => "hoge2" ); SetCookie("hogehoge", $data); こんな感じで$data配列を作成しクッキーに保存して、 $c_data=$HTTP_COOKIE_VARS["hogehoge"]; で、データを呼び出して echo"$c_data[a]"; で出力できるようにしたいのですが、 なかなかうまくいかないです。 >>87 こんなスレに書いても、セッション使えで終わると思うが。 再びスレ違い? >>87 Cookie は文字列しか受け付けないだろ? マニュアル (http://www.php.net/manual/en/function.setcookie.php ) を 見れば分かるが、引数は "string" と書いてある。 int setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]) マニュアルのサンプルコードにやりたいことのやり方が書いてあるぞ。 >>86 >それは、IEでなんか設定したときだけじゃない? (・∀・)? >>90 クッキーの寿命の話ね。 ひとつのブラウザで1つのセッションになる。 IEは、設定すればウィンドウごとに別セッションになる。 セッションで「前のページ」を保存って話題だから、パラメータでセッション変数渡すことは考えてない。 そんときはパラメータに前ページ情報つければなにも問題ないから。 >>91 >IEは、設定すればウィンドウごとに別セッションになる。 どうやってすんの? そろそろ>>61 について教えて欲しかったり。 age >>96 あーホントだ、よく見りゃそうだ。どうもありがd これで安心して眠れるぞヽ(´ー`)ノ PHP4のセッション初めてつかたけど、 /tmpにセッションごとの変数の値ががんがんたまってます。 もういいやと思ったあたりで消すしかないんでしょうか? 俺は、php.iniでsession.save_pathを/var/tmp/phpにしておき、cronで /var/tmp/php以下を掃除するようにしてる。 >>100-101 マニュアル読み直した方が良いかと思われ。 >>102 gcで消えることが多いんだけど、消えてないこともあるぞ。 >>101 session.gc_probabilityでGCの開始確率指定かえてみたら? うげ、session.gc_probabilityのマニュアルを良く読むと、in percentって書 いてある。デフォルトは1.0じゃなくて1%ってことだったのカー。 逝ってくる。 php3国際版を使ってんだけど、id&pass を hidden で渡してるのはやっぱ気持ち悪い。 早いとこ php4に行きたいなぁ。 ところで、php4のセッション管理って、クラスのインスタンスを 保存できないのだよね? スカラー変数と配列のみ?? インスタンスが保存できればうれしいんだけどな。 >>106 クラスのインスタンスもセッション登録は可能です。 メンバのみでメソッドはセッションに保存されないけどね 詳細はマニュアルをみれ >>99-105 わかりやすい流れで助かりました。 ありがとうございます。 PHP4でのセッション管理なんですが、 PHP4標準のセッション機能とPHPLIBでのセッション機能、 みなさんどちらを使用されていますか? どちらを使用しようか迷ってます。 「セキュリティホール memo メーリングリスト」で Apache::Session (Perl モジュール) の話が出てるね。 WebObjects使えば、Session管理は自動。管理そのものに頭を悩ます必要ないです。 そのSession内でやりたいことを記述することに集中できますよ。 PHPもいいですけど、WebObjectsは比較になりませんでした。 結局のところ、session管理にはcookieは使うべきなのだろうか。 クロスサイトスクリプティング等の問題もあるけど。 セッションIDをURLで持たせて行くのは怖いような気がするんですが、みんなはどうやってる? $_SESSION変数を使うえば透過的に処理してくれそうなんだけど、 使ってる人居る? ブラウザを完全に閉じると消える一時的cookieですが、 Proxyサーバーを通している場合、 クライアントがブラウザを閉じてもCookieがProxyサーバーに残りますか? >>115 WebObjectsは反則です。あれはVBでWinアプリ作ってる感覚になっちゃいます。 Perl の CGI::Session::DB_File 使ってるんですが、 ロックファイルはどうやって削除するのがイイんで しょうか? delete() した後も残りますよね。 Apache::Session::Lock::File だと clean() がある んだけど… (でもバグってる) 複数ページにまたがるアンケートで URL埋め込みやhiddenを使ってページ間で値を渡してます URL埋め込みの場合ですが、直打ちで任意のページを表示できてしまうので アンケートの解答中にふとしたはずみで 直にページに飛んでしまい、解答済みのデータが飛ぶかもしれないと PATH_INFOを使って判別してるのですが PATH_INFOは間違った情報を返したりすることはないんでしょうか? リファは結構ふっとんだりしてくれるので 似たようなことが起こるかと心配で… PHPのセッション管理で鯖分散対応の為にセッションハンドラをカスタマイズして、 セッションオブジェクトを外部鯖のDBに保存する方法があるんだが、 http://www.pgsql.info/yohgaki.php http://www.phpbuilder.com/columns/ying20000602.php3 誰か実際にやっている人います? >>126 ここのスクリプトを改造して、自前でやってるぞ。 ttp://itb-tech.itboost.co.jp/phptips/view.php?fCID=15 >>126 おれも使ってる。正月にリニューアルしてwebを2台構成にした。 DBは後ろのネットワークに下げて両方から繋いでる。 www1.hoge.com www2.hoge.com の構成でも使えてるヨ。 POSTメソッドを利用して入力フォームからPHPでPostgreSQLにApache経由でデータを登録するプログラムを書いています。 以下のプログラムを冒頭に置くとプログラムの最後の行を示しパーサーエラーで, 停止してしまいます。 session_start(); ob_start("mb_output_handler"); /* データ登録処理 */ if (isset($_POST["sbmt"])) { /* enctypeがmultipart/form-dataなのでエンコーディング変換 */ while (list($key, $val) = each($_POST)) { $_SESSION["post"][$key] = htmlspecialchars( mb_convert_encoding($val, "EUC-JP", "auto"), ENT_COMPAT, "EUC-JP"); } 原因はセッション変数に明示的に変数が設定されていないからでしょうか? >132 サンクス でも、さっきのプログラムの前に別の関数からデータをセットして あると動くんだよね /* セッション変数管理 */ if (!isset($_SESSION["diary_year"])) { $_SESSION["diary_year"] = date("Y"); } こんなかんじで date("Y")って部分は別の関数から定義されてるんだよね 最初にセッション関数が呼び出されたときには、配列の中を空に しておきたいんですよ、それから簡単なエラーチェックをして sbmitが実行した時にさっきのプログラムで文字をエンコードしたいよね。 今までのログを読んだけれど、なんとなくしかわかってないので、 質問させてください。 Perlで会員管理のしくみをつくってるのですが、 会員情報を入れてあるCSVファイルに、セッションIDの列をつくる。 IDパスワードを入れてもらってログインに成功した場合、 $year.$month.$day.$hour.$min.$$をcryptしたものを、 会員情報のセッションID列と、クッキーの両方に書き込んで、 以降は、そのセッションIDをクッキーでもらったら、それに該当する会員情報を表示する・・・ これって、問題ないでしょうか? また、セッションIDを暗号化するという場合、上記のようにサーバ側とクライアント側両方を、 cryptするべきなんでしょうか? >>134 やりかた自体はOK。 cryptはCookieのマジックナンバーを生成するために行うもの。 だからクッキーを生成するときに1回だけ行う。 135です。 自己レスだが134には問題あった。 会員テーブルにセッションIDフィールドを持たせるのはよくない。 セッションはセッション管理用のテーブルを別にもたせる。 そのテーブルには、 セッションID ユーザ識別コード セッション間で引き渡すデータ セッションの最終アクセス日時 などを入れておく。 >>137 たびたびすみません。 で、正直、>>137 のようにするメリットがわかりません。。。 あと、ユーザ識別コードって、 会員テーブルのユニークな主キー(の外部キー)っていうことですか? >>138 ユーザ識別コードはユーザごとのユニークなキー です。セッション間で値を引き渡すだけの簡単な 管理だけなら不要ですね。ログインして利用する サイトを作るなら必要になると思いますが。 セッション管理の理論は書いてあっても実装まで具体的に 書かれている本って少ないですから、書籍で勉強する よりホームページで勉強したほうがいいかもね。 すいません、あとひとつ。 >>137 だと、 もしユーザが「ログアウト」ボタンを押したとき、 クライアントの持ってるクッキーも削除(過去の時間を指定)して、 セッション管理用テーブルから該当レコードを削除すればいいわけですよね? ただ、ユーザがログアウトボタンを押さずにブラウザを閉じてしまった場合、 該当レコードは削除されないため、レコードがどんどんたまってしまうかと思います。 これは、どうすればいいのでしょう? ほっとくしかない?あるいは、 どっかのタイミング(そのユーザがまたログインしてきたとき?)に削除するのでしょうか? あ、そのために「セッションの最終アクセス日時」の列があるのかな? >>141 ふつうはサーバでクーロン動かして定期的に掃除してやる。 >>142 そっかー。 いまつくってるところ、クーロン使えないんですよね・・・ なら、そのユーザがまたログインしてきたときに、 削除(というか新しいセッションIDに書き換える) でも、問題とくにないですよね? ($sec, $min, $hour, $mday, $mon, $year,$wday, $yday, $isdst) = localtime(time); $year += 1900;#気持ちわるいので、一応4桁にしておく $sessionid = crypt($year.$mon.$mday.$hour.$min.$sec.$$, "AA"); で、セッションIDを取得したのですが、なんかいアクセスしても、 $sessionid = AAwTU6/kNo2jY という文字列になってしまいます。 なぜなんでしょうか >>143 ユーザが再度ログインしたら、前回のそのユーザのセッション ファイルだけ削除する必要はない。ログインしたらすべての セッションファイルをチェックして、時間切れになるものをすべて 削除すればOK。 ASP VBScriptでsession変数を使ってセッション管理しようおおもうのですが、 ブラウザがわでクッキー無効にされてる場合ってセッション管理できなくなってしまうのでしょうか?その場合はURLにうめこむとか、HiddenでPOSTするとかで対処するしかないのでしょうか? $sessionid = crypt($year.$mon.$mday.$hour.$min.$sec.$$, "AA"); print $sessionid; ・・と、セッションIDを生成してるのですが、 リロードを何度やっても同じ文字列になってしまい、 わけわからん状態です。。。 どうしてなのでしょうか? crypt って、先頭の何文字かしかみてなかったと思う。 >>148 なーるほど。 調べたら、先頭8文字しか見てないようです DES(無印) = 8文字 MD5($1$) = 255文字(?) BlowFish($2$) = ? >>147 セッションを全く理解していないと思われるので、 まずフローチャート描いてみることをお勧めする。 セッション管理しつつ、2重ログイン(複数の人が同じIDでログイン)を禁止 するには、どうすればいいのでしょうか? >154 「あなたは本当に○○さんですか?」というダイアログを出す。 SSL 使えないならマジこれしかない。 あ、すいません、訂正 2重ログイン(複数の人が同じIDでログイン) ↓ 2重ログイン(複数の人が同じIDで、同時に、ログイン) >>154 んん? どんなセッション管理の方法を使ってるのかわからんが……。 普通はそんな状況にはならんのではないのか? IDとセッションを対で運用してる? 一つのIDには一つまでのセッションしかないようにすれば、解決しないか? >>157 設計しだいだな。ログイン時の IP アドレスを記録しておいて、 同一 ID に対する最終ログイン IP アドレスしか受け付けないように するしかないか。 A → ログイン (成功) A → ページ要求 (成功) B → ログイン (成功) A → ページ要求 (失敗) B → ページ要求 (成功) これは IP アドレスを個人特定のキーに使っているが、ID に対する 初回ログイン時に Cookie を発行して、ID と Cookie を検証するとか そういう方法しかない。まぁこの話を聞いてピンとこなきゃあきらめれ。 Javaを使っている場合、JMSを使ってみるとか。Sessionオブジェクトを一定期間DBなんかに永続化して ログイン時に同じオブジェクトが永続化されていればログイン中などの判定を下す… 色々な判定基準があるだろうけど。ちょっと実装が難しいかな。 >>158 ほんとだ。普通にクッキーと、セッションマスタ.csvをつくってたら、 自然と解決してた。 あのー、(トップ含めて)すべてのページをcgi'perl)にして、 セッション管理してたら、共用サーバだと追い出されます? >>163 そうなんだ。。。 てっきり、「当たり前だろ」みたいなレスがくるかなと思ってた。 ∧∧ ミ _ ドスッ ( ,,)┌─┴┴─┐ / つ.;ダブダブ-│ 〜′ /´ └─┬┬─┘ ∪ ∪ ││ _ε3 ゛゛'゛'゛ おかずなら過激に http://www.dvd01.hamstar.jp perlとクッキーで強引につくってしまったが重いー ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ 申込フォームがたくさんあるサイトを構築していて、 申込フォームが2,3ページまたがるページが多いとする。 (申込1->申込2->確認->完了のような) この場合、その申込フォーム毎にsessionで パラメータ受け渡しするのって割と普通にやるもん? hiddenで持ちまわしてもいいんだけど、 入力不備があって前のページに戻したい時 入力されたパラメータを維持させた状態で前のページに戻そうとすると LocationだとGETで渡すしかなくて、それだとURLに出てしまう。 sessionでやれるんであればそのページ自体にPOSTして 入力チェックもそのページ内のコードで完結できて あとはLocationで飛ばせばすむ。 申込フォーム毎にセッション作るっておかしい? それくらいhiddenでやるべき? マジレスきぼん。 >>174 ある程度の信頼性が求められる場面では、サーバ側にセッション変数保存するのが鉄則。 PHPのsession.gc_probabilityって変更してます? ヤフーのIDってどうやってブラウザーで セッション情報保持してんの? クッキーすててもログアウトするまでID残ってんだけど・・・ 誰か知らない?? >>179 ブラウザがメモリにクッキー持ってるのでは? ファイルとしてのクッキーは捨ててもメモリーには 残るんですね・・・・・・ レンタルサーバーにショッピングサイトを作りたいのですが ↓みたいなのでいいと思いますか? 使用可能な環境 SSL CGI SQLDB ログイン画面→画面1→画面2→画面3 (全部SSL) 1.ログイン画面でID・パスワードを入れる SQLDBと比較してOK 2.セッションIDを生成しクッキー作成(期限無効メモリー内) サーバー上のセッションIDファイルへ追加 3.画面2→画面3へ移るたびにクッキーの セッションIDとサーバーのセッションIDファイルを 比較してチェック 今迷っているのはセッションIDをどう生成するかです。 また、画面移動するたびにチェックが必要なのでしょうか。 みなさんはどうしていますか? PHP4やクッキーでいろいろセッション管理調べて 試したけど、どれも一長一短でいまいち。 そこで、ふと思いついたんだけど セッションIDなんて使うから危険? 単純に hidden + POST(GETはダメ) + SSL(必須) で ID+パスワードをパラメータで毎回送って 全ページで認証すればいいような。 PHP使おうが、クッキー使おうがどっちみち セッションIDの認証は全ページしないといけない 事を考えるとレスポンス自体もそんなにかわらない ような気がするし、セキュリティーの 観点から見ても結構いいと思うけど どうでしょうか。 なによりも 携帯端末でもこの仕組みなら問題ないしね。 >>186 じゃオマエのアホじゃない方法を述べてみろ そして、どこがアホかも述べろ アホ どなたか、セッション管理について分かりやすく書かれているサイトを教えてくださいませんか >>185 セッションIDが何かわかってないな・・ クッキー吐き出さん、携帯端末でブラウザとサーバー間で行う セッション管理のような真似はできまつか... >1 当時はPearのSessionライブラリも無かったのか。 >>193 どんなテクニックで行うのか教えてもらえませんか、参考になるURLでもいいでつ よろぴく。 ASPのsession管理ってcookieオフってると使えないのですか? PHPは? javaもcookie使ってるの? >>194 たとえばJavaServletなら、response.encodeURL("URL")で、クッキー使わないことが可能 >>196 同じく ログを読まずに同じ質問でループさせるカスも終了してほしい。 >>185 セッションIDの認証は全ページしないといけない 何で全ページで認証させるの? セッションIDの意味ないじゃん セクース相手をセショ-ン管理できますか? いろんな店に行ってるので、どこ娘とやったのか覚えきらんのです。 だから、無期限の cookie を発行してセショ-ン管理したいなと。 セッションってどのぐらいの容量までいいの? /tmp/sess_??? ファイルに入るんだよね。 DBにした場合フィールド長をどのくらいにしようかと・・・ 携帯向けセッション管理がわからないです・・・ hidden連れ回しじゃなくURLリライティング?とかでやりたいんですけど apacheのmod_rewriteとかでいいんでしょうか? 情報お願いします >>2 ならこのスレのみんなに理想どおりの彼女ができる Perl CGI::Sessionでセッション管理 Cookieからセッションidを読み取れた = Cookieオンである と判断して間違いないでしょうか? それとも、Cookieからセッションidを読み取れたが、 Cookieに書き込みができない、という状況も想定するべきですか? 適当に過ぎちゃって、今更ちゃんとやろうとすると難しいなw Perlのセッションの決定版書籍ってないかな。 | | ガガガッ | | 人 ∧_∧ < >_∧∩ ( ・∀・) 人`Д´)/ ←>>153 と ) < >_∧∩ Y /ノ .人`Д´)/ ←>>177 / ) < >_∧∩ _/し' //. V`Д´)/ ←>>213 (_フ彡 / 俺たち未来から来た。 perlで。 時代が流れ流れて 2014年の perlはこんなかんじになったぞい ちなみにperl自体ですら鯖になるんだぞい セッション管理とデータベースをバインド ちなロシア製 $self->plugin('session' => { store => MojoX::Session::Store::Dbi->new( dbh => DBI->connect('DBI:mysql:MyApp:', 'user', 'pass'), ), transport => MojoX::Session::Transport::Cookie->new, expires_delta => 36000, stash_key => 'mojox-session', }); # Router my $r = $self->routes; # /nurupo にアクセスすると welcome ページを表示 $r->get('/nurupo')->to('example#welcome'); my $logged_in = $r->bridge->to( 'example#login'); ## / とか /hogehogeとかにアクセスしようとすると ログインしてないと ログイン画面に戻る セッション?そんなもん意識したら負け $logged_in->get('/')->to( 'example#welcome'); $logged_in->get('/hogehoge')->to( 'example#hoegehoe'); 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 GAG6LMPRK5 首都圏の鉄道各社が18日、一斉に運賃の値上げに踏み切る。多くは国の制度を活用したホームドアなどバリアフリー設備の整備促進を前提とした値上げだが、新型コロナウイルス禍による乗客減少を理由に通常の手続きで運賃改定を行う会社もある。生活必需品などの値上げが相次ぐ中、一段と財布に冷たい風が吹き込みそうだ。 「できれば目標を前倒しして整備していきたい」 18日から国の「鉄道駅バリアフリー料金制度」を活用した値上げを実施するJR東日本。同社は令和13年度までに東京圏330駅にホームドアを設置する目標だが、深沢祐二社長は増収分でさらなる整備の加速に取り組む考えを示した。 JR東はホームドア設置に加え、段差解消やトイレの改良などバリアフリー化に要する費用を、既に投資した分を含め6千億円近くと見込む。制度利用による増収分は年約230億円と予測されるだけに、同社にとってメリットは大きい。 運賃を値上げする際、事業者は国の認可が必要となる。認可条件にも鉄道事業が3年連続で赤字になることなどが含まれ、審査のハードルは高い。だが、3年12月創設の同制度は、値上げ分の使途がバリアフリー化に限定される代わりに審査不要の届け出制だ。 また、値上げ幅のルールはないが、乗客に「薄く広く」負担を求めるとされ、国実施のアンケートでも値上げ幅は「10円まで」が許容範囲との趣旨の回答が6割に上り、各社ともそれに沿った対応をしている。 read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる