• ベストアンサー

クッキーCookieで、値のサイズ制限はあるのでしょうか?

CGIでcookieを使おうと考えておりますが、キー部は長くないのですが、値の部分が非常に長いので、正しく保存されるか心配です。 制限等はあるのでしょうか? ちなみにキー部は20文字程度ですが、 値の長さは1024バイトあります。

  • CGI
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.1
参考URL:
http://www.teria.com/~koseki/memo/cookie/cookie_4k.html

関連するQ&A

  • クッキーに配列で値をいれた時にうまく取り出せないです

    質問させていただきます。 setcookie()で画面の項目をクッキーに保存したいのですが、 項目が多いので項目制限のためか全部クッキーに保存されず配列にいれることにしました。 (implodeで一つの項目にしようかとも思いましたが、項目によっては一つの項目で複数の値をもつためやめました) その際保存,読み出すときは下記のように書いたのですが、うまく拾ってくれません。 しかしながらprint_r($_COOKIE)で見た時は値が入っているようです。 記述のミスなどがあればご指摘をお願いいたします。 //保存するとき $time = time() + 3600 * 24 * 30; setcookie("Item[a]",$_SESSION['a'],$time) setcookie("Item[b]",$_SESSION['b'],$time) setcookie("Item[c]",$_SESSION['c'],$time) //読み出すとき $_SESSION['a'] = $_COOKIE['Item[a]']; $_SESSION['b'] = $_COOKIE['Item[b]']; $_SESSION['c'] = $_COOKIE['Item[c]'];

    • ベストアンサー
    • PHP
  • 指定ディレクトリからcookie取得

    $cook = $ENV{'HTTP_COOKIE'}; foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; } $cook{'name'} ./index.cgiで、上記のように$ENV{'HTTP_COOKIE'}でクッキーを取得しています。 このままでは./に保存されたクッキーが取得されてしまいますが、これを、任意のディレクトリ(./../html/等)に保存された場所から取得したいと考えていますが、可能でしょうか。 CGIが設置されているディレクトリ = 'http://hogehoge/cgi-bin/'; COOKIEを読み込むディレクトリ = 'http://hogehoge/html/';

    • ベストアンサー
    • Perl
  • cookieのdomain指定

    http://www.***.com/ でcookieを生成して http://www.+++.jp/hoge/ 以下でその値を読み込みたいので、 document.cookie=値; path=/; domain=www.+++.jp とJavaScriptで書きましたが、 http://www.+++.jp/hoge/ のほうで 値が取得できません。 ちなみに値の取得はCGIで行っています。 (ブラウザ:IE、OS:WinXP) pathやdomainの指定が間違っているのでしょうか? そもそも、指定したpathやdomainの値は Cookie情報の保存されているテキストには書き込まれないのでしょうか? pathやdomainの指定をしない場合はcookieファイルにデータが上書きされたりしているのは確認したのですが・・・。 困っています。よろしくお願いいたします。

  • CGIのCookieの消去

    こんにちは。 CGIのチャットを利用していて、そのチャットではユーザー名などを Cookieで保存しているのですが、Cookieの設定が間違っていて まったく情報が保存されなくなってしまったのですが、それを直すためにCGIで作成したCookieを消去したいのですが、やり方がわかりません・・ JavaScriptを利用してCGIで作成したCookieを消去することはできるのでしょうか? 出来るならばやり方についてもできればお願いします・・・

  • cookieを設定

    Webブラウザが情報を保存する機能としてcookieがありますが、 JavaScriptでcookieを設定する方法と、 CGIがHTTPヘッダに「Set-Cookie」を含めてcookieを設定する方法が あるかと思います。 JavaScriptとCGIで設定する2つの方法のそれぞれのメリットは なんでしょうか? つまり、 JavaScriptを利用してcookieを設定する場合、Webサーバがcookieに 対応していなくても問題ないという利点はあることは分かりましたが、 他にはないのでしょうか? CGIでHTTPヘッダにcookieを保存しておいた場合、うれしいことは 何でしょうか?

  • Cookieの値の取得

    お世話になっています。 Cookieの値の取得について疑問がありますので、どなたか教えていただけないでしょうか? ------------------------------------------------------- /test/test1.php の中に <? setcookie ("test" , "hogehoge" ,time() + 86400 * 30); ?> ------------------------------------------------------- /test/test2.php の中に <? echo $HTTP_COOKIE_VARS[test]; ?> ------------------------------------------------------- /test2/test3.php の中に <? echo $HTTP_COOKIE_VARS[test]; ?> ------------------------------------------------------- というファイルを作成しました。(test3.phpのみ階層が違います) まず始めにtest.phpを表示させて、Cookieの情報を保存させます。 次にtest2.phpを表示させると、Cookieの情報を取得することが できますが、test3.phpを表示させると、Cookieの情報を取得すること ができません。これは、なぜなのでしょうか?また、取得する方法 はあるのでしょうか(無いわけは無いと思いますが・・・)? 以上です よろしく、お願い致します。 teraum

    • ベストアンサー
    • PHP
  • フレームからcookieを呼び出せない・・・?

    自分のホームページで、左にフレーム、右にBBSのCGIを表示の状態になったとき、一回書き込みをしてもcookieが保存されないようです。 右クリック→新しいウィンドウで開く、なら問題なく保存できるようです。 原因として思い当たるのは、フレームページとCGIのサーバが異なることぐらいです。 フレームページを表示させたまま書き込むときに、cookieを保存することはできないでしょうか?

    • ベストアンサー
    • HTML
  • Cookieの値に日本語が入るとエラーが発生します

    OS:WindowsServer2008 Standard (32bit) CGI実行環境:IIS7.0 + ActivePerl5.8.9.827 上記の環境に、IE8でCGIからSet-CookieでCookieに日本語の値を入れて、 画面遷移すると「500 -内部サーバー エラーです。」が出力されます。 (ブラウザの戻るボタンで一度戻り、進むボタンでページを表示させた場合、うまく表示される場合があります。) また、Cookieの値に半角英数字が入っている場合、 IE6でページを表示した場合は、エラーが発生しません。 原因・解消方法として何か考えられることはございますでしょうか。

    • 締切済み
    • CGI
  • 書き込んだばかりのcookieが読み込めません

    cookieを書込んだ直後、書込めたか(cookieをオフにしていたり、cookieを書込めない携帯端末からのアクセスかもしれないので)確認をしようと、cookieを読込もうとしたのですが、cookieが書込まれているにもかかわらず情報を取得することができません 実験環境として、htmlファイルにボタンを作って、cgiへ飛び、そのcgi内でcookieを書込み、cookieが書込めたかどうかで分岐して、表示するようにしています (cgiを一度実行したあと一旦ブラウザで前のhtmlファイルに戻って)cookieが既に書込まれた状態で、改めてhtmlファイルのボタンを押せばcookieは読込めますが、最初にcookieを書込んだ時に同じcgi内で即読込みを行ったら読込めません 書込が完結する前に読込みに行っているから読込めないのかとも思い、読込み前にタイムラグを作っても見ましたがやはり読込めません どうすれば書込み直後に読み込めるのでしょうか? 色々ネットで調べても見ましたが、いっこうに解決策が見つかりません ご存じの方ぜひご教授下さい よろしくお願いします なお、下にperlのコードを書いておきます #クッキーを書込 $test{sid} = "12345"; &set_cookie($test{sid}); #タイムラグ use Time::HiRes; Time::HiRes::sleep(0.8); #クッキーを読込 ($cookie{test}) = &get_cookie; if(!$cookie{test}){ print "読み込めてない"; } else{ print "読み込めた"; } ######→読み込めません##### #クッキー書込sub sub set_cookie { local(@cook) = @_; local($gmt, $cook, @t, @m, @w); @t = gmtime(time + 2*60*60); @m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); $gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]); foreach (@cook) { s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $cook .= "$_<>"; } print "Set-Cookie: SID=$cook; expires=$gmt; path=/;\n"; } #クッキー読込sub sub get_cookie { local($key, $val, *cook); $cook = $ENV{'HTTP_COOKIE'}; foreach ( split(/;/, $cook) ) { ($key, $val) = split(/=/); $key =~ s/\s//g; $cook{$key} = $val; } foreach ( split(/<>/, $cook{'SID'}) ) { s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg; push(@cook,$_); } return (@cook); }

    • ベストアンサー
    • Perl
  • Cookie情報の取得と表示

    特定のCookieを取得し、ページに表示させるスクリプトについて質問させていただきます。 現在、Cookieに保存されたハンドルネーム(2バイト文字も含む)の情報を取得し、 ページ上に表示させるスクリプトを作成しています。 Googleで検索した参考サイトを参考に以下のスクリプトを試してみましたが、 2バイト文字(”ああああ”等)については表示されないか、”%54%454%121%”のような文字化けになってしまいます。「test」のような1バイト文字については普通に表示されます。 いろいろ調べた結果、システムからCookieに保存する際に、文字コードがUTF8ではなく、SJISで保存されているため、「test」などの1バイト文字は普通に取得できますが、「ああああ」などの2バイト文字についてはバイナリデータとして扱われ、取得できない?ようになっているようです。 単にシステムからCookieに保存する際に「UTF8」で保存すればいいのかもしれませんが、可能ならJavascriptの何らかの処理で解決できればと考えております。 どなたかお分かりになれば、ご教授いただけませんでしょうか? 以下が現在テストしているスクリプトコードです。 <script language="JavaScript"> <!-- function GetCookie(name){ var st=""; var ed=""; var temp=""; if (document.cookie.length>0){ st=document.cookie.indexOf(name + "="); if (st!=-1){ st=st+name.length+1; ed=document.cookie.indexOf(";",st); if (ed==-1)ed=document.cookie.length; temp = document.cookie.substring(st,ed); } } decodeURIComponent(temp); return ""; } // --></script> <script language="JavaScript"> <!-- User = GetCookie('fmcHN'); // ハンドルネーム取得 document.write(User,"さん"); // --></script>

専門家に質問してみよう