X



Session管理してる?
0001名無しさん@お腹いっぱい。
垢版 |
2001/05/23(水) 23:24ID:ZWP7e.Mk
PHP3だとSession使えないから、id&passをhiddenで吐き出している。
DBで一意のsessionidを作ってやりゃーいいんだけどExpireとか
めんどくさい。

ASPやPHP4ならSession管理楽だよね。
0068名無しさん@おへそいっぱい。
垢版 |
2001/07/04(水) 21:28ID:U5Vc3q2o
>>64 Apache 使ってるなら httpd.conf か .htaccess で
GET がはじけるだろう。まにあるみれ。
0069殿堂ナナシ
垢版 |
2001/07/04(水) 23:34ID:???
>>66
セッションの登録について PHP4 マニュアルには
「変数名を保持する文字列または変数名からなる配列」
ってあるね。

Java だと Serializable なオブジェクト(Javabean とか)は
出来るのにね〜。
007066
垢版 |
2001/07/05(木) 01:19ID:???
>>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;}
となんとなくシリアライズしてくれてる風味。
0072名無しさん@お腹いっぱい。
垢版 |
2001/07/13(金) 13:41ID:???
PHP4で各ユーザのセッションファイル(sess_*)の特定は
セッションIDの取得すればよいのですかね?
たとえばxxx.php?session_idのような感じでOKかな?
じゃ、Hiddenで渡すとき、nameは何になるのでしょうか?
疑問だったので・・・・・。
0073名無しさん@お腹いっぱい。
垢版 |
2001/07/13(金) 14:14ID:IqmDBVro
>>64
例:
$value=$HTTP_POST_VARS["hoge"];

これだとGET送信されたhoge(パラメータ名)の値は取れません。
phpの設定によっては使用できませんが。
0075名無しさん@お腹いっぱい。
垢版 |
2001/07/18(水) 09:56ID:pNSSuY1U
>>74
各ユーザのセッション情報を特定するということじゃないのかな?
例えば、各ユーザでカスタマイズされたページを出力
するとか・・・。
0076名無しさん@お腹いっぱい。
垢版 |
2001/07/18(水) 13:58ID:IiBzwOm6
>>74
必要性を感じないなら必要なし。
複数のHTTPセッションに渡ってクライアント情報を維持したいときに便利。
0077名無しさん@お腹いっぱい。
垢版 |
2001/07/18(水) 21:33ID:???
>>76
PHP4 でしょ? だったら session_start() するだけて
session_register() した変数をとりこんでくれるんだから
スクリプト側は session ID を意識しなくていいじゃん。
007877
垢版 |
2001/07/18(水) 21:36ID:???
ああ、そうね。書いてから気づいたよ。
セッション終わっても情報を取っときたいってことね。
0079PHP三日目
垢版 |
2001/07/18(水) 23:52ID:???
PHPのセッションって
セッションタイムアウトってゆー概念がないの?
(ASPにあるよーなやつ)
0082ナナシファン
垢版 |
2001/07/30(月) 11:55ID:gBtO/HQg
>>79
あるよ〜。設定はphp.iniじゃなかったかな?覚えてなくてごめん。
0083ほげ
垢版 |
2001/07/30(月) 16:03ID:???
>>82
消える確率とか設定あったよね。どうしてランダムなのか理解に苦しんだ。
0084名無しさん@お腹いっぱい。
垢版 |
2001/07/30(月) 19:30ID:???
セッション管理って大丈夫?
二つのページを同時にアクセスした場合とかどうよ
セッション情報に「前のページ」とか残して、
それを信用して組んだりできないよね...
0086コメント無しさん
垢版 |
2001/08/03(金) 14:08ID:???
>>84
>セッション情報に「前のページ」とか残して、
>それを信用して組んだりできないよね...
セッション管理が大丈夫かどうかとは関係ない気が

>>85
それは、IEでなんか設定したときだけじゃない?
0087名無しさん@お腹いっぱい。
垢版 |
2001/08/04(土) 13:47ID:DQ4jThjY
クッキーに関しての質問です。
クッキーに配列を保存できますかね?
例えば、
$data=array(
"a" => "hoge1",
"b" => "hoge2"
);
SetCookie("hogehoge", $data);
こんな感じで$data配列を作成しクッキーに保存して、
$c_data=$HTTP_COOKIE_VARS["hogehoge"];
で、データを呼び出して
echo"$c_data[a]";
で出力できるようにしたいのですが、
なかなかうまくいかないです。
0088コメント無しさん
垢版 |
2001/08/04(土) 17:46ID:???
>>87
こんなスレに書いても、セッション使えで終わると思うが。
再びスレ違い?
0089電動ナナシ
垢版 |
2001/08/04(土) 18:06ID:yWM3EPUw
>>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]]]]])

マニュアルのサンプルコードにやりたいことのやり方が書いてあるぞ。
009085
垢版 |
2001/08/07(火) 15:59ID:???
>>86
>それは、IEでなんか設定したときだけじゃない?
(・∀・)?
0091コメント無しさん
垢版 |
2001/08/07(火) 16:12ID:???
>>90
クッキーの寿命の話ね。
ひとつのブラウザで1つのセッションになる。
IEは、設定すればウィンドウごとに別セッションになる。

セッションで「前のページ」を保存って話題だから、パラメータでセッション変数渡すことは考えてない。
そんときはパラメータに前ページ情報つければなにも問題ないから。
0092名無しさん@お腹いっぱい。
垢版 |
2001/08/10(金) 14:12ID:RmKi09oM
>>91
>IEは、設定すればウィンドウごとに別セッションになる。
どうやってすんの?
0094名無しさん@お腹いっぱい。
垢版 |
2001/08/10(金) 14:26ID:RmKi09oM
>>93
クッキーのとこ?
なんないけど
0095名無しさん@お腹いっぱい。
垢版 |
01/11/07 01:49ID:xHkACnav
そろそろ>>61について教えて欲しかったり。
age
0096名無しさん@お腹いっぱい。
垢版 |
01/11/07 02:15ID:WNbh62gs
ん?
クロスサイトスクリプティングでしょ?
009795
垢版 |
01/11/07 02:29ID:xHkACnav
>>96
あーホントだ、よく見りゃそうだ。どうもありがd
これで安心して眠れるぞヽ(´ー`)ノ
0098名無しさん@お腹いっぱい。
垢版 |
01/11/08 22:15ID:BR2wW00P
PHP4のセッション初めてつかたけど、
/tmpにセッションごとの変数の値ががんがんたまってます。
もういいやと思ったあたりで消すしかないんでしょうか?
0099名無しさん@お腹いっぱい。
垢版 |
01/11/16 10:07ID:dtqn0qNF
ガーベジコレクションで消えてくんじゃない?
0103101
垢版 |
01/11/18 06:25ID:???
>>102
gcで消えることが多いんだけど、消えてないこともあるぞ。
0105101
垢版 |
01/11/18 21:08ID:???
うげ、session.gc_probabilityのマニュアルを良く読むと、in percentって書
いてある。デフォルトは1.0じゃなくて1%ってことだったのカー。
逝ってくる。
0106z
垢版 |
01/11/21 00:38ID:???
php3国際版を使ってんだけど、id&pass を hidden で渡してるのはやっぱ気持ち悪い。
早いとこ php4に行きたいなぁ。

ところで、php4のセッション管理って、クラスのインスタンスを
保存できないのだよね? スカラー変数と配列のみ??
インスタンスが保存できればうれしいんだけどな。
0107名無しさん@お腹いっぱい。
垢版 |
01/11/21 21:59ID:???
>>106
クラスのインスタンスもセッション登録は可能です。
メンバのみでメソッドはセッションに保存されないけどね

詳細はマニュアルをみれ
010998
垢版 |
01/11/23 14:24ID:w+gD3nN+
>>99-105
わかりやすい流れで助かりました。
ありがとうございます。
0110名無しさん@お腹いっぱい。
垢版 |
01/11/27 16:01ID:cyjl29qD
PHP4でのセッション管理なんですが、
PHP4標準のセッション機能とPHPLIBでのセッション機能、
みなさんどちらを使用されていますか?
どちらを使用しようか迷ってます。
0111age
垢版 |
02/01/09 12:58ID:13jpWnyp
age
0115名無しさん@お腹いっぱい
垢版 |
02/01/23 02:53ID:???
WebObjects使えば、Session管理は自動。管理そのものに頭を悩ます必要ないです。
そのSession内でやりたいことを記述することに集中できますよ。
PHPもいいですけど、WebObjectsは比較になりませんでした。
0117名無しさん@お腹いっぱい。
垢版 |
02/02/21 16:29ID:???
結局のところ、session管理にはcookieは使うべきなのだろうか。
クロスサイトスクリプティング等の問題もあるけど。
セッションIDをURLで持たせて行くのは怖いような気がするんですが、みんなはどうやってる?
0120age
垢版 |
02/06/20 21:08ID:iXAPSXQ3
ブラウザを完全に閉じると消える一時的cookieですが、
Proxyサーバーを通している場合、
クライアントがブラウザを閉じてもCookieがProxyサーバーに残りますか?
0121nobodyさん
垢版 |
02/06/28 23:42ID:???
>>115
WebObjectsは反則です。あれはVBでWinアプリ作ってる感覚になっちゃいます。
0122nobodyさん
垢版 |
02/07/24 21:42ID:sfTx1osq
Perl の CGI::Session::DB_File 使ってるんですが、
ロックファイルはどうやって削除するのがイイんで
しょうか? delete() した後も残りますよね。

Apache::Session::Lock::File だと clean() がある
んだけど… (でもバグってる)
0124nobodyさん
垢版 |
03/03/09 16:41ID:xF/AergB
複数ページにまたがるアンケートで
URL埋め込みやhiddenを使ってページ間で値を渡してます

URL埋め込みの場合ですが、直打ちで任意のページを表示できてしまうので
アンケートの解答中にふとしたはずみで
直にページに飛んでしまい、解答済みのデータが飛ぶかもしれないと
PATH_INFOを使って判別してるのですが
PATH_INFOは間違った情報を返したりすることはないんでしょうか?
リファは結構ふっとんだりしてくれるので
似たようなことが起こるかと心配で…
0125nobodyさん
垢版 |
03/03/10 22:33ID:???
漏れもhidden良く使うかも。 
0128nobodyさん
垢版 |
03/03/13 20:01ID:???
>>126
ここのスクリプトを改造して、自前でやってるぞ。
ttp://itb-tech.itboost.co.jp/phptips/view.php?fCID=15
0129nobodyさん
垢版 |
03/03/15 00:57ID:???
>>126

おれも使ってる。正月にリニューアルしてwebを2台構成にした。
DBは後ろのネットワークに下げて両方から繋いでる。

www1.hoge.com
www2.hoge.com

の構成でも使えてるヨ。
0130nobodyさん
垢版 |
03/03/15 01:14ID:Sqe0b8Ey
セッション:負け組
クッキー:勝ち組
0131nobodyさん
垢版 |
03/03/15 18:03ID:YPCssbUz
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");
}
原因はセッション変数に明示的に変数が設定されていないからでしょうか?

0133nobodyさん
垢版 |
03/03/15 18:53ID:YPCssbUz
>132
サンクス
でも、さっきのプログラムの前に別の関数からデータをセットして
あると動くんだよね
/* セッション変数管理 */
if (!isset($_SESSION["diary_year"])) {
$_SESSION["diary_year"] = date("Y");
}
こんなかんじで
date("Y")って部分は別の関数から定義されてるんだよね
最初にセッション関数が呼び出されたときには、配列の中を空に
しておきたいんですよ、それから簡単なエラーチェックをして
sbmitが実行した時にさっきのプログラムで文字をエンコードしたいよね。
0134nobodyさん
垢版 |
03/03/31 23:27ID:7tNuLEs3
今までのログを読んだけれど、なんとなくしかわかってないので、
質問させてください。

Perlで会員管理のしくみをつくってるのですが、

会員情報を入れてあるCSVファイルに、セッションIDの列をつくる。
IDパスワードを入れてもらってログインに成功した場合、
$year.$month.$day.$hour.$min.$$をcryptしたものを、
会員情報のセッションID列と、クッキーの両方に書き込んで、
以降は、そのセッションIDをクッキーでもらったら、それに該当する会員情報を表示する・・・

これって、問題ないでしょうか?
また、セッションIDを暗号化するという場合、上記のようにサーバ側とクライアント側両方を、
cryptするべきなんでしょうか?
0135nobodyさん
垢版 |
03/03/31 23:54ID:lrdCZ3fP
>>134

やりかた自体はOK。

cryptはCookieのマジックナンバーを生成するために行うもの。
だからクッキーを生成するときに1回だけ行う。
0136134
垢版 |
03/04/01 08:35ID:???
>>135
なるほど、ありがとうございますた
0137nobodyさん
垢版 |
03/04/01 08:38ID:CaQk8w76
135です。
自己レスだが134には問題あった。

会員テーブルにセッションIDフィールドを持たせるのはよくない。
セッションはセッション管理用のテーブルを別にもたせる。
そのテーブルには、
 セッションID
 ユーザ識別コード
 セッション間で引き渡すデータ
 セッションの最終アクセス日時
などを入れておく。
0138135
垢版 |
03/04/01 23:57ID:1YIS/hST
>>137
たびたびすみません。

で、正直、>>137のようにするメリットがわかりません。。。
あと、ユーザ識別コードって、
会員テーブルのユニークな主キー(の外部キー)っていうことですか?
0140nobodyさん
垢版 |
03/04/03 06:17ID:+kJBCXqS
>>138
ユーザ識別コードはユーザごとのユニークなキー
です。セッション間で値を引き渡すだけの簡単な
管理だけなら不要ですね。ログインして利用する
サイトを作るなら必要になると思いますが。

セッション管理の理論は書いてあっても実装まで具体的に
書かれている本って少ないですから、書籍で勉強する
よりホームページで勉強したほうがいいかもね。
0141134
垢版 |
03/04/04 10:45ID:lpjcObWV
すいません、あとひとつ。

>>137 だと、
もしユーザが「ログアウト」ボタンを押したとき、
クライアントの持ってるクッキーも削除(過去の時間を指定)して、
セッション管理用テーブルから該当レコードを削除すればいいわけですよね?

ただ、ユーザがログアウトボタンを押さずにブラウザを閉じてしまった場合、
該当レコードは削除されないため、レコードがどんどんたまってしまうかと思います。

これは、どうすればいいのでしょう?
ほっとくしかない?あるいは、
どっかのタイミング(そのユーザがまたログインしてきたとき?)に削除するのでしょうか?

あ、そのために「セッションの最終アクセス日時」の列があるのかな?
0142nobodyさん
垢版 |
03/04/04 19:30ID:tuNiAs90
>>141
ふつうはサーバでクーロン動かして定期的に掃除してやる。
0143141
垢版 |
03/04/04 22:50ID:fnHSIfLl
>>142
そっかー。
いまつくってるところ、クーロン使えないんですよね・・・
なら、そのユーザがまたログインしてきたときに、
削除(というか新しいセッションIDに書き換える)
でも、問題とくにないですよね?
0144141
垢版 |
03/04/05 02:53ID:ur80FjBN
($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 という文字列になってしまいます。
なぜなんでしょうか
0145nobodyさん
垢版 |
03/04/05 05:27ID:WWynoIxP
>>143
ユーザが再度ログインしたら、前回のそのユーザのセッション
ファイルだけ削除する必要はない。ログインしたらすべての
セッションファイルをチェックして、時間切れになるものをすべて
削除すればOK。
0146nobodyさん
垢版 |
03/04/05 08:30ID:LO75gp9Z
ASP VBScriptでsession変数を使ってセッション管理しようおおもうのですが、
ブラウザがわでクッキー無効にされてる場合ってセッション管理できなくなってしまうのでしょうか?その場合はURLにうめこむとか、HiddenでPOSTするとかで対処するしかないのでしょうか?
0147nobodyさん
垢版 |
03/04/05 13:05ID:Ia1grhBJ
$sessionid = crypt($year.$mon.$mday.$hour.$min.$sec.$$, "AA");
print $sessionid;

・・と、セッションIDを生成してるのですが、
リロードを何度やっても同じ文字列になってしまい、
わけわからん状態です。。。

どうしてなのでしょうか?
0148nobodyさん
垢版 |
03/04/05 14:31ID:???
crypt って、先頭の何文字かしかみてなかったと思う。
0149147
垢版 |
03/04/05 18:50ID:???
>>148
なーるほど。
調べたら、先頭8文字しか見てないようです
0150nobodyさん
垢版 |
03/04/05 18:53ID:???
DES(無印) = 8文字
MD5($1$) = 255文字(?)
BlowFish($2$) = ?
0151nobodyさん
垢版 |
03/04/09 05:08ID:???
>>147
セッションを全く理解していないと思われるので、
まずフローチャート描いてみることをお勧めする。
0153山崎渉
垢版 |
03/04/20 06:23ID:???
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0154nobodyさん
垢版 |
03/04/22 07:11ID:WjOOaJ36
セッション管理しつつ、2重ログイン(複数の人が同じIDでログイン)を禁止
するには、どうすればいいのでしょうか?
0156nobodyさん
垢版 |
03/04/22 08:08ID:???
>154
「あなたは本当に○○さんですか?」というダイアログを出す。
SSL 使えないならマジこれしかない。
0157154
垢版 |
03/04/22 08:12ID:WjOOaJ36
あ、すいません、訂正
2重ログイン(複数の人が同じIDでログイン)

2重ログイン(複数の人が同じIDで、同時に、ログイン)
0158nobodyさん
垢版 |
03/04/22 10:54ID:???
>>154
んん? どんなセッション管理の方法を使ってるのかわからんが……。
普通はそんな状況にはならんのではないのか?

IDとセッションを対で運用してる?
一つのIDには一つまでのセッションしかないようにすれば、解決しないか?
0159nobodyさん
垢版 |
03/04/22 18:52ID:???
>>157
設計しだいだな。ログイン時の IP アドレスを記録しておいて、
同一 ID に対する最終ログイン IP アドレスしか受け付けないように
するしかないか。

A → ログイン (成功)
A → ページ要求 (成功)
B → ログイン (成功)
A → ページ要求 (失敗)
B → ページ要求 (成功)

これは IP アドレスを個人特定のキーに使っているが、ID に対する
初回ログイン時に Cookie を発行して、ID と Cookie を検証するとか
そういう方法しかない。まぁこの話を聞いてピンとこなきゃあきらめれ。
0160nobodyさん
垢版 |
03/04/22 22:54ID:???
Javaを使っている場合、JMSを使ってみるとか。Sessionオブジェクトを一定期間DBなんかに永続化して
ログイン時に同じオブジェクトが永続化されていればログイン中などの判定を下す…
色々な判定基準があるだろうけど。ちょっと実装が難しいかな。
0161154
垢版 |
03/04/24 01:14ID:Dv9rntoL
>>158
ほんとだ。普通にクッキーと、セッションマスタ.csvをつくってたら、
自然と解決してた。
0162nobodyさん
垢版 |
03/04/24 08:35ID:g+kZcsKr
あのー、(トップ含めて)すべてのページをcgi'perl)にして、
セッション管理してたら、共用サーバだと追い出されます?
0164162
垢版 |
03/04/26 19:48ID:bCd38fy3
>>163
そうなんだ。。。
てっきり、「当たり前だろ」みたいなレスがくるかなと思ってた。
0165nobodyさん
垢版 |
03/04/26 20:29ID:M/JTw+9v
        ∧∧  ミ _ ドスッ
        (   ,,)┌─┴┴─┐
       /   つ.;ダブダブ-│
     〜′ /´ └─┬┬─┘
      ∪ ∪      ││ _ε3
               ゛゛'゛'゛
おかずなら過激に
 http://www.dvd01.hamstar.jp
0167nobodyさん
垢版 |
03/05/10 21:17ID:NHls6sVf
age
レスを投稿する


ニューススポーツなんでも実況