• 締切済み

初めまして、CGI(DataBase)とJavaScriptを組み合わ

初めまして、CGI(DataBase)とJavaScriptを組み合わせてサイトを作りたいと思い試行錯誤しています。 質問の内容はDataBase(cgi)に登録するとユーザー名とメールアドレスがcookieに書き込まれるのでトップページにアクセスしたらJavaScriptでユーザー名を表示させることは可能でしょうか? 可能ならどうしたら良いのかアドバイスを頂けないでしょうか? どうか宜しくお願い致します。

みんなの回答

回答No.3

No.2の訂正 × function getCookie (key) { ○ function getCookie (name) { でした。

回答No.2

No.1回答者です。 Cookieを保存する時のパラメーターの詳細を提示されてないので、 具体的な方法は回答できませんが、 ・保存するとき、pathを省略するとカレントのディレクトリー(含むファイル名)  となり、別のindex.htmlからはアクセス出来ません。同じドメインのルートに  あるページからも参照するなら、保存するときpath="/"としなければなりません。 ・保存するときセキュアなオプションを指定していると、セキュアなセッションで  ないと読み出せないでしょう。 ・もし、保存するとき暗号化して保存してれあれば、複合化の方法を通さないと、  たとえ読めても意味がないでしょう。 以上がクリアされていれば、 window.onload =function(){ var key ="ユーザー名のキーの値"; var user = getCookie (key); var user_node = document.createElement("span"); if(user != null) user_node.appendChild(document.createTextNode("「" + user + "」さん")); else user_node.appendChild(document.createTextNode("「ゲスト」さん")); document.documentElement.insertBefore(user_node, document.documentElement.firstChild); } function getCookie (key) { name = encodeURIComponent( name ).replace(/([.*()])/g,'\\$1'); var value = doc.cookie.match( RegExp( name + '\\s*=\\s*(.*?)(?:[\\s;,]|$)')); return value ? decodeURIComponent( value[1] ):''; }

futaba0601
質問者

お礼

お返事を頂きありがとうございます。 [GetCookie] sub GetCookie{ my$cookname=shift; foreach(split(/;/,$ENV{HTTP_COOKIE})){ $_=&UrlDecode($_); my($key,$val)=split(/=/); $key=~s/\s//g; $buff{$key}=$val; }foreach(split(/\,/,$buff{$cookname})){ my($key,$val)=split(/<>/); $key=&HtmlEncode($key); $val=&HtmlEncode($val); $COOKIE{$key}=$val; }1;} [setcookie] sub SetCookie{ my($cookname,$cookval,$cookexp)=@_; my$expires; if($cookexp){ my@Month=(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); my@Week=(Sun,Mon,Tue,Wed,Thu,Fri,Sat); my($sec,$min,$hour,$mday,$mon,$year,$wday)=gmtime(time+$cookexp*86400); $expires=sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",$Week[$wday],$mday,$Month[$mon],$year+1900,00,00,00); }$cookname=&UrlEncode($cookname); $cookval=&UrlEncode($cookval); print"Set-Cookie: $cookname=$cookval; expires=$expires\n"; 1;} ログイン時にユーザー名をcookieにSetさせる所までは出来たんですが、そこからトップページに戻ったさいにSetしたユーザー名を表示させる事が出来ず困っています。

回答No.1

 初回以降のアクセス時にトップページに名前を表示させる事だけが目的なら、 CGIでDBを検索して名前を取得する必要は無いですね。 DB登録画面のページでクッキーに名前を書き込んでありさえすれば、  ページロード時にjavascriptで、クッキーを読み込み、名前があれば表示させ、 無ければなにもしない。でよいと思うんですが...

futaba0601
質問者

お礼

お返事を頂きありがとうございます。 Database(CGI)から呼び出したテンプレート(html)では名前を表示させることが出来るんですが トップページ(index.html)にも名前を表示させたいので困っています。 (例) トップページ(index.html)→cookieに情報があれば、トップページに「名前」を表示させる。    ↓ cookieに情報がなければ、トップページに「ゲスト」と表示させる。 上記のようなことが出来ればと考えています。

関連するQ&A

専門家に質問してみよう