- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【懸賞サイト作成】番号入力で応募できる認証ページ)
【懸賞サイト作成】番号入力で応募できる認証ページ
このQ&Aのポイント
- 缶コーヒーやペットボトルなどにシールがついていて、番号を入力すると応募ページに飛べるクイズや懸賞応募サイトを作りたい。
- 概要は、商品についている番号を認証すると、応募フォームが表示され、フォームから情報を登録して送信できればいいのですが、認証の部分で思う通りのことができず困っています。
- PHPのユーザー認証でクッキー使用のプログラムを参考にしているが、知識不足でうまく動作しない。希望としては、1万個程度のシールIDを認証し、5種類の応募フォームに振り分けたい。また、クッキーにIDを覚えさせず、一度認証済みのIDは応募不可にしたい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
結論としては PHPでもいいということでしょうか シールIDで あたり/はずれ が分かり あたれば 設定したページに飛ぶ 番号は使用済みにする サーバは指定がないので データベースが使えるものとして考えます あたりなら 名前 住所 メール などを入力させるということでしょうか
その他の回答 (1)
- LancerVII
- ベストアンサー率51% (1060/2054)
回答No.1
こんにちは。 ここで回答できる範囲では完成できないと思います。 もうすこし仕様を詰めたほうが良いです。 (4)なんてきちんと対応を決めておかないと何回でも応募されますよ。 また、通常このくらいのデータを扱うのであればデータベースを利用します。 データベースを利用すれば一度使用されたIDや表示したいフォームの管理なんかが楽です。
質問者
お礼
こんにちわ。 回答ありがとうございます。 ここでできる範囲のことじゃないということで、もっと簡単になるよう考えてみました。 JavaScriptを用いて、パスワードを入力してフォームにジャンプするようにします。 実際のところ、セキュリティ面はそんなに必要ではなく、 シールを持っている人もしくは番号を知っている人のみアクセスできればOKなのです。 何度でも応募されたって、同姓同名の場合は弾くという手作業でも構いません。 http://ryu-tan.net/blog/?p=324 ↑こちらを参考に、パスワード設定を設置しました。 これに、リンク先をパスワードごとにランダムに振り分ける方法を、同じくJavaScriptでつけられたら、ざっくりやりたいことはできるようになるのですが…。 パスワードを1万個設定するのであれば、これもデータベースから引用するようにするべきでしょうか?
お礼
何度も回答いただいてありがとうございます。 もう一つの質問スレッドの方で解決いたしました。 解決スレッドの方でお二人にベストアンサーをつけさせてもらいたかったのですが、システム上無理なので、aoyama984さんにはこちらでベストアンサーにさせてください。 本当にありがとうございました。 たくさん勉強させていただきました。
補足
こんにちわ。 もう一つの方の質問にもお答えいただいて、こちらも回答いただいてありがとうございます。 今、PHPでやろうと思い、これまでの質問回答などを合わせて、こういうコードでやっているのですが、あたりなら"aaa.html","bbb.heml","ccc.html"のどれかに飛ぶようにしたいのですが、飛んでくれません。 また、$pwd = "pass";があって、冒頭にdifine("pwd","pass")がダブルであるというのもおかしいはずなんですが、どう処理していいのかも…わからず、止まってしまっています。 おそらく、 header ("Location:".$redirect_url[$i]); ここがちゃんと書ければ動くような気がするのです。 <?php define("pwd","pass"); session_start(); if(isset($_POST["action"])&&$_POST["action"]==="login"){ if(pwd === $_POST["password"]){//パスワード確認 $_SESSION["TEST"] = md5(pwd);//暗号化してセッションに保存 $pwd = "pass"; //転送先 $redirect_url = array("aaa.html","bbb.heml","ccc.html"); $varPOST = $_POST; if ( $varPOST[pwd] == $pwd ){ $i = mt_rand(0,count($redirect_url)-1); //Redirect header ("Location:".$redirect_url[$i]); header ('HTTP/1.1 302 Found'); } }else{ session_destroy();//セッション破棄 message(); } } ?> <?php function message(){ print "認証コードが違います"; } ?> <?php if(isset($_POST['logout'])){ // セッション変数を全て解除する $_SESSION = array(); // セッションを切断するにはセッションクッキーも削除する。 // Note: セッション情報だけでなくセッションを破壊する。 if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"] ); } //セッションを破壊してリダイレクト session_destroy(); header("Location:index.php"); } ?> <form action="" method="post"><input name="password" type="text" value="" /><input name="action" type="submit" value="login" /></form>