• 締切済み

apacheでcookieを扱いたい

サーバーをapacheにしたらcookieがうまく動かなくなった。 以前、04WebServerを利用していた時のコード ・cookieの発行 print ("\r\n\r\n") print '<script language="javascript">' print 'document.cookie = "testcookie=1; path=/python"' print '</script>' ・cookieの削除 print ("\r\n\r\n") print '<script language="javascript">' print 'document.cookie = "testcookie=None; path=/python;" ' print '</script>' ・cookieの確認 if os.environ.has_key('HTTP_COOKIE'): cookie = Cookie.SimpleCookie() cookie.load(os.environ["HTTP_COOKIE"]) cookieValue = cookie["testcookie"].value 上記のようにcookie処理を行っており、 cookieを print すると Set-Cookie: testcookie=1 cookie["testcookie"].value から 1 が取得できました。 しかし、サーバーをApaheに変更したところ cookieを print すると Set-Cookie: Apache=4dcf77a5.50d1204a49e25 となってしまい、発行したはずのtestcookieは存在していません。 cookie["Apache"].value で取得できる値も 4dcf77a5.50d1204a49e25 とよくわからないものになっています。 何が問題なのか教えてください。

  • HTML
  • 回答数1
  • ありがとう数7

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

04WebServerの仕様がよくわからないのですが apacheにprint?って状況はどういうことでしょう? なにかプログラムをかましています?

関連するQ&A

  • 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>

  • Cookieを用いてのセッション管理

    以前も問い合わせさせていただいた件なのですが、 未だ解決していないので、再掲させていただきます。 やりたいことは、 個人認証のページを作り、ログオフ後、ブラウザの戻るボタンを押しても、 ログイン中となるのを避けたい。 以下のような感じで、cookieを使って実現しようとしているのですが、 ログオフ時にcookieの削除は、うまくいったのですが、 ブラウザの戻るボタンでログイン中のページに戻ると、 $ENV{'HTTP_COOKIE'}の中身を見ると、実際にはCookieは削除されているにも関わらず、 Cookieの情報がよみこまれているため、ログイン中となってしまいます。 何か基本的なやり方を間違っているような気がします。 どなたかご教授願います。 ↓a1.cgi(ログイン画面)--------------  : (ID、パスワード認証後) #Cookie書き込み print "Content-type: text/html\n"; print "Set-Cookie: NAME=aaa; expires=Tue, 1-Jan-2030 00:00:00 GMT;\n"; print "\n";  : ↑a1.cgi(ログイン画面)-------------- ↓a2.cgi(ログイン中)--------------  : #Cookie読み込み $cookie01 = "$ENV{'HTTP_COOKIE'}\n";  : <HEAD> <!-- キャッシュクリア --> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">  : </HEAD>  : ↑a2.cgi(ログイン中)-------------- ↓a3.cgi(ログオフ)--------------  : #cookie削除。 print "Content-type: text/html\n"; print "Set-Cookie: NAME=aaa; expires=Fri, 31-Dec-1999 23:59:59 GMT;\n"; print "\n";  : </HEAD>  : ↑a3.cgi(ログオフ)-------------- ※a1.cgi、a2.cgi、a3.cgiは同じディレクトリです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Cookieへの書き込みは出来たのですが・・・

    Cookieに書き込んだjavaScriptの情報をjavaで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script>

  • Cookieの保存と取り出し

    いつもお世話になります。 下記のソースで、選択項目をクッキーに保存、保存したクッキーの表示、削除を行おうと考えました。 Alertで見るとクッキーの保存はできているようですが、呼び出すと違う項目が表示されてしまいます。  すみませんが、どなたかお助けください <html> <head><TITLE></TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS"> <script src="cookie2.js" language="JavaScript"></script> </head> <body onLoad="getCookieData()"> <br> <FORM action="job_conf.php" method="post" name="calf1"> <input type="button" onclick="setCookieData();" value="保存"> <input type="button" onclick="getCookieData();" value="呼び出し"> <input type="button" onclick="clsCookieData();" value="削除"> <table border=1> <tr> <td><b><font size=-1>JOB1</b></font></td> <td><select name="job1"> <option selected></option> <option value="windows98">Windows98</option> <option value="windows2000">Windows2000</option> <option value="windowsxp">WindowsXP</option> <option value="windowsvista">WindowsVista</option> <option value="linux">Linux</option> <option value="mac">Mac</option> </td> </tr> <tr> <td><b><font size=-1>JOB2</b></font></td> <td><select name="job2"> <option selected></option> <option value="windows98">Windows98</option> <option value="windows2000">Windows2000</option> <option value="windowsxp">WindowsXP</option> <option value="windowsvista">WindowsVista</option> <option value="linux">Linux</option> <option value="mac">Mac</option> </td> </tr> </table> </FORM> </BODY> </HTML> ----- cookie2.js ----- function setCookieData() { val1=document.calf1.job1.value; val2=document.calf1.job2.value; val = val1+val2; if(!val) { alert("値を下記より選択してください"); document.calf1.job1.focus(); } var setval =val1 + "=" + val2; var essetval = escape(setval); document.cookie=essetval+ "=expires =Tue ,31-Dec-2030 23:59:59;"; alert(document.cookie); } function getCookieData() { if(document.cookie); { val=document.cookie; getval = unescape(val); var v = getval.split("="); if(v[0]) { document.calf1.job1.value = v[0]; } if(v[1]) { document.calf1.job2.value = v[1]; } else if ((!v[0])&&(!v[1])) { alert("保存内容はありません"); document.calf1.job1.focus(); } } } function clsCookieData() { delcookie = "setval="; document.cookie ="setval;expires = Sun,31-Dec-2000 23:59:59;"; document.calf1.job1.value = document.calf1.job2.value = document.calf1.job3.value = ""; }

  • 複数のcookieでの保存

    javescriptはかなりの初心者です。 サイトや本のサンプルで勉強してテキストボックス、チェックボタン、 ラジオボタンに記入した内容を保存するcookieの作成を試みたのですが 上手くいきません;; どなたかご教授よろしくお願いします。 やりたい事はフォームに記入・チェックした内容をセレクトボタン 「保存1」「保存2」・・・と選択したら、それぞれにセーブ・ロードを複数記憶させたいと思っています。 5つほどの記憶を予定しています。 実際に保存させるフォーム数は数十個以上あり、テキストボックスの記入内容は数字だけの予定です。 また、それらは別途の計算するスクリプトでの入力内容として使っています。(競合とかの問題もあるのでしょうか?) なお、下記の状態でもラジオボタンだけは保存も出来ませんでした; 作成したものを載せましたが、なにぶん初心者の作成したscriptな だけに役に立たない構文で、説明不足もあるかもしれませんがよろしくお願いします。 <HTML> <HEAD> <script language="JavaScript"> <!-- function set_cookie(){ var a = document.getElementById('myform').a.value; var b = document.getElementById('myform').b.selectedIndex; var c = document.getElementById('myform').c.selectedIndex; var d = document.getElementById('myform').d.checked; var e = document.getElementById('myform').e[0].checked; var f = document.getElementById('myform').e[1].checked; EXP=new Date(); EXP.setTime(EXP.getTime()+(30*1000*60*60*24)); document.cookie= a+"["+b+"["+c+"["+d+"["+e+"["+f+"["+";expires="+EXP.toGMTString(); } function get_cookie(){ var GET=document.cookie; GET=GET.split("["); document.getElementById('myform').a.value = GET[0]; document.getElementById('myform').b.selectedIndex = GET[1]; document.getElementById('myform').c.selectedIndex = GET[2]; document.getElementById('myform').d.checked = GET[3]; document.getElementById('myform').e[0].checked = GET[4]; document.getElementById('myform').e[1].checked = GET[5]; } --> </script> </HEAD> <BODY> <form id="myForm">テキスト1<BR> <INPUT size="20" type="text" maxlength="10" value="0" name="a"><BR> <BR> セレクト1<BR> <SELECT size="2" name="b"> <OPTION value="0" selected>0</OPTION> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> <OPTION value="3">3</OPTION> <OPTION value="4">4</OPTION> <OPTION value="5">5</OPTION> </SELECT><BR> <BR> セレクト2<BR> <SELECT name="c"> <OPTION value="0" selected>0</OPTION> <OPTION value="1">1</OPTION> <OPTION value="2">2</OPTION> <OPTION value="3">3</OPTION> <OPTION value="4">4</OPTION> <OPTION value="5">5</OPTION> </SELECT><BR> <BR> チェック1<BR> <INPUT type="checkbox" name="d" value="0"><BR> <BR> ラジオ1<BR> <INPUT type="radio" name="e" value="0"><BR> <INPUT type="radio" name="e" value="1"><BR> <BR> <BR> <SELECT name="selectsave"> <OPTION selected>保存1</OPTION> <OPTION>保存2</OPTION> <OPTION>保存3</OPTION> <OPTION>保存4</OPTION> <OPTION>保存5</OPTION> </SELECT><BR> <BR> <INPUT type="button" value="セーブ" name="save" onclick="set_cookie()"> <P><INPUT type="button" value="ロード" name="lord" onclick="get_cookie()"><BR> </P> </form> </BODY> </HTML>

  • CGIにJAVAの記述をしたい

    CGIプログラムの中にJAVAの記述をしたいのですが うまくいきません。 ヒアドキュメントでくくってみましたが 500エラーで表示されませんでした。 どう記述すれば動いてくれるんでしょうか? print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=Shift_JIS\">\n"; print "<link rel=\"stylesheet\" type=\"text/css\" href=\"$loaddir/style.css\">\n"; print "<title>$title</title>\n"; ここに下記のJAVA文を入れたいです。 print "</head>\n"; 記入したいJAVA <SCRIPT language="JavaScript"> <!-- document.write('<img src="momo/123.cgi?' + 'javaref=' + document.referrer + '" width=1 height=1>'); // --> </SCRIPT>

    • 締切済み
    • CGI
  • cookie が有効がどうか判断させたいのですが・・・

    HPを見ているブラウザーが cookie が有効かどうか しらべたいのですが、よくある cookie の書き込みと 読み出しのサンプルを使って以下のようなスクリプトを 考えました。 $cookie_flg = 1; print &setCookie("CHECK", $cookie_flg); # Cookie の値を得る &getCookie(); $cookie_flg = $COOKIE{'CHECK'}; if ($cookie_flg eq '') { $cookie_flg = 0; # Cookie が使えない } return $cookie_flg; ・・・これでわかるでしょうか? ブラウザーでは実際に、cookie が使える状態 なのですが、アクセス最初の1回目は 0 が返って くるのです。 ( 2回目以降は 1 が返ってきて望みどおりです ) ひょっとして、cookie の仕様として、書き込んで から、すぐに読み出そうとしても、読めないもの のでしょうか? それとも、cookie を書き込んだあと、一旦、 print "Content-type: text/html\n\n"; で閉めてから、読み出さないといけないとか??? こんなんで、何日もうんうん考え込んでます。 ベテランの方には、あまりに馬鹿馬鹿しい問題 なのかもしれませんが・・・

    • ベストアンサー
    • Perl
  • cookieについて教えてください。

    iswebのサーバーを借りています。 cookieの書きこみを下のような記述を試しています。 ($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time + 60*60*3); @mons = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); @week = ('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sut'); $date = sprintf("%s, %02d\-%s\-%04d %02d:%02d:%02d GMT",$week[$wday], $mday, $mons[$mon], $year+1900, $hour, $min, $sec); $mydata = "abc"; print "Set-Cookie: AAA=$mydata; expires=$date;"; print "Content-type: text/html\n"; print "\n"; print "<meta http-equiv="Set-Cookie" content="AAA=$mydata; expires=$date">"; 以下いろいろつづく。 この時にSet-Cookie: AAA=$mydata; expires=$date;";を残すとエラーが出てmetaを残すと動きます。 自分のパソコンの中では、両方動きます。 そこで教えていただきたいのですが、 javascriptのdocument.cookie、perlのSet-Cookie、metaのSet-Cookieの違いを教えてください。

    • ベストアンサー
    • Perl
  • このif構文の間違いを教えて下さい。

    どうぞ宜しくお願いします。 *onsubmitでアラートを出力するようにしています。 if条件も"||"でひとまとめにもしてみましたが上手くいきませんでした。 ########################################## print "<SCRIPT LANGUAGE=\"JavaScript\">\n"; print "<!--\n"; print "function FldChk(){\n"; print " if( document.MyForm.name.value == '' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " if( document.MyForm.email.value == '' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " if( document.MyForm.comment.value == 'noting' ){\n"; print " alert('名前\、E\-mail\、選択項目は必須入力です ');\n"; print " return false;\n"; print " }\n"; print " else{\n"; print " alert('O\Kを押して10\秒\後に申\込が完\了します。有\難う御\座いました\♪ ');\n"; print " return true;\n"; print " }\n"; print "}\n"; print "// -->\n"; print "</SCRIPT>\n"; #############################################

  • Cookie情報取得についてです。

    Cookieに書き込んだjavaScriptの情報をhtmlで取得する方法はありますか? ソースは下の通りです。 <script language="JavaScript" type="text/javascript"> <!-- kikan=90; my_name="1"; my_datas=new Array(); my_datas2=new Array(); my_name="TestMan"+my_name; function DataRead() { if(document.cookie.length>0 && document.cookie.indexOf(my_name)!=-1) { my_datas=document.cookie.split("; "); for(i=0; i<my_datas.length; i++) {if(my_datas[i].indexOf(my_name)!=-1)break;} my_datas2=my_datas[i].split("="); my_datas2[1]=unescape(my_datas2[1]); } return my_datas2[1]; } function DataWrite(datas) { jikann=new Date(); ima=new Date(jikann.getTime()+(kikan*24*60*60*1000)); datas=escape(datas); document.cookie=my_name+"="+datas+";expires="+ima.toGMTString(); return; } CookieData="TEST"; DataWrite(CookieData); //--> </script> 最終的には「TEST」を取得したいのですが、よい方法は無いでしょうか?

専門家に質問してみよう