dポイントプレゼントキャンペーン実施中!

Webで、画面遷移してもデータを保持させるには、
私の知っている範囲では、
(1)隠しフォームを使う
(2)Cookieを使う
という方法があると思います。

これらの方法を使った場合、
保持できるデータ量の上限や、
何画面くらいまではデータ保持可能なのか?といった
制約はどうなっているのでしょうか。
具体的に自分で使ったことが無いので、分からなくて困っています。
「何Kバイトまで」「何画面まで」といったことがお分かりの方、
教えてください。

それと、他に、こんな方法があるよ!
この方法だと、ここまでデータが持てるよ!というのを
ご存知の方も、教えてくださると嬉しいです。
(NTサーバでASPを使っても、データの保持はできるんでしょうか?)

よろしくお願いします。

A 回答 (2件)

大量のデータを保存したい場合、


IIS/ASP の考え方をうまく利用すればいいかと思います。

保存したいデータをサーバー側で管理するようにします。
それぞれのデータには、識別番号(ID)を設定します。

ID をクライアントとの間でやり取りするようにします。

ID をクライアントとやり取りする方法としては、次のようなものがあります。
1. Cookie : IIS/ASP で利用している方法
 利用者のブラウザが Cookie を使えることが必要。
 i-mode 等では使えない
2. クエリー引数
例: http://server/test.asp?id=00001
 クエリー引数をすべてのサーバー送信時に
 つけることが必要。
 ユーザーがブックマークする場合も考えておく
3. input type=hidden を使う
 フォーム形式が必要
 クエリー引数形式との併用も検討

なお、実装にあたっては、次の点も注意する必要があります。
1. データを保存する期間
 データを破棄するタイミングをいつにするのか。
 IIS/ASP の場合、その ID で最後にアクセス
 されてから、一定時間たつと自動的に
 削除します。
2. ID は延々と増えるのか ? それとも再利用するのか
 管理用の識別番号を作る場合、番号が
 再利用するかどうか、増えつづけるのかという
 問題があります。
 IIS/ASP の場合、IIS をリスタートすると
 再利用する可能性があります。
3. ID のセキュリティの確保
 ID を他の人が利用すると、他人のデータに
 アクセスできる可能性があります。
 ID を大きな値にして、類推しにくくし、
 かつ、特定のIDは、特定のIPアドレスから
 のみ利用できるようにするなどの対応が
 必要です。

なお、画面間で値を保存する方法として、
隠しフォーム、Cookie、ASP 以外にも、
ウィンドウ、フレームを使う方法もあります。
ウィンドウ、フレームを、遷移する画面とは
別に用意しておき、保存しておきたい
データをブラウザ上のスクリプトから
ウィンドウ、フレームに書き込むという
方法です。

あと、GET、POST できるデータ量は、ブラウザ
および、ブウラザのバージョンや、
間に入っているProxyやファイアウォールに
よって、変わります。

以上、参考にしていただければと思います。

 
    • good
    • 0
この回答へのお礼

kawabataさん、ありがとうございます。まだ初期検討段階なので、ASPが使える環境を提案できるか分からないのですが、やはりWebアプリケーションサーバーを利用する方向で考えたほうが、自由度が高くなりそうですね。詳細に解説頂き、大変勉強になりました。今後共よろしくお願いします。

お礼日時:-0001/11/30 00:00

 隠しフォームの場合は、POSTを使えば理論上はいくらでもOKのはずですが、実際にはそんな何十キロバイトも渡したりするのはよくないようです。


 またクッキーの場合は、上限はよく分かりませんが、せいぜいが1KB未満に抑えるのが慣例になっているようです。(4~5KB入れてるの見たことありますけど)

 また、どれくらいの画面間でデータを渡しつづけられるかというのは、クッキーの場合は同一サーバー内のすべて、隠しフォームは当然次の画面までです。

 で、ASPで作るのであればクッキーとか使うよりもSessionとApplicationを使ったほうがいいと思います。
 こいつらは考え方はクッキーと同じですが、サーバー側にデータを持ちます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます!
数キロであれば、どちらでも問題ないということですね。

ASPを使ったほうが、運用上も良さそうなので、
もう少し検討してみたいと思います。

今後共よろしくお願い致します。

お礼日時:-0001/11/30 00:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!