• 締切済み

トップページからクイズAを選択し、回答し終えて、トップページへ戻るとクイズAを終えましたねみたいな表示を出す

 一応コンセプトから話させてもらいます。まず、登録画面でメールアドレスとパスを入力してもらい、そのメールアドレスにクイズページのアドレスが届く。次にそのアドレスへ行くとベーシック認証画面(.htaccess)になり、アドレスとパスを入力します。  で、認証し終えると、トップ画面でクイズA,B,Cを選択しろみたいな画面をだし、選択をすると、各々のクイズ画面HTMLへジャンプする。でクイズ画面で回答を入力し、送信すると、回答ありがとうという画面がCGIで表示され、かつ回答内容が保存され、トップ画面へ自動で戻るようになっています。  一応、ここまでは動作を確認しているので、終了するたびに、次のクイズに行ってもらえば問題はないのですが、それだけだと少し味気ない+もしユーザーが日を改めて回答をするとき、どのクイズを回答し終えたかわからなくなると困るので、クイズを終えるたびにトップ画面にあなたはA,Bを終えていますみたいな表示を出したいのです。  多分、回答ありがとうのCGIあたりでアクセスログ?を取って、トップ画面でそのログを読み取り、あなたはAをクリアしてます、みたくすれば良いかな?とは思っているのですが、具体的な方法が浮かばないので、解決法をお願いいたします。

みんなの回答

  • t4t
  • ベストアンサー率55% (47/84)
回答No.2

サーバサイドでのプログラミングのほうが得手なのでしたら、JavaScriptでブラウザ側で行うのではなく、トップページもCGIで作ってしまって、そのなかでブラウザに喰わせたクッキーを取得して、返すHTMLに文言を埋め込んだり、あるいは既にクリアした問題にはリンクを張らなくする、というほうがいいと思います。 (クイズなら、補足でおっしゃるとおり、そのほうが分かりやすいでしょうし) ご存じかもしれませんが参考になるリンクを置いておきます。 ご参照あれ。

参考URL:
http://www.tohoho-web.com/wwwcook.htm
experion
質問者

補足

試行錯誤したけっか、 //トップ画面 if(cCookie==""){ document.write("あなたはまだ一問も行っていません") } else{ document.write("                                            あなたは既に" +cCookie+ "の問題を終了しています") } cCookie = document.cookie; //回答終了のCGI CGI(1):document.cookie = "A; expires= Sun, 29-Dec-2030 23:59:59"; CGI(2):document.cookie = "B  省略 と、javascriptにそれぞれ記述したのですが、これだと、クリアするたびに、A,Bが上書きされて、どちらか一方しか回答していますが表示されません(てっきり両方とも一遍に表示されると勘違いしてました)。それぞれに数字をつけてfor文でif ccookie=1ならAがクリアみたく回せばなんとかなるかとは思うのですが、なんにしてもCGI(1)とCGI(2)のA,Bがわけて保存されないと話にならないと思います。分けて保存できる方法があれば教えてください。

  • t4t
  • ベストアンサー率55% (47/84)
回答No.1

ブラウザのセキュリティ設定にもよりますが、ブラウザにCookieを喰わせるのはダメでしょうか? JavaScriptでもできますし、サーバサイドプログラムでも可能です。 クイズのページで、回答した質問番号をブラウザにCookieとして喰わせておいて、トップページではそのCookieを読み取って、質問番号を判断して表示するというのが楽ではないかと思います。

experion
質問者

お礼

CGIの画面で、 print "Content-type: text/html\n"; print "Set-Cookie: NAME=quizA;";Tue, 31-Dec-2030 23:59:59; print "\n"; トップ画面で、 alert(document.cookie); if(???) document.write("あなたはAをクリアしましたね") みたいな感じですかね? ???部分がどうすればいいかよくわからないので、できればソース等を考えていただけると幸いです。

experion
質問者

補足

回答ありがとうございます。cookieはまだ使ったことがないので今、調べているのですが、ただ、クイズが複数問あるので、cookieを使うとしたらやはりCGIの画面にアクセスしたときのcookieを食う方が良いかもしれないと思いました。

関連するQ&A