• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:パスワード認証時に、ジャンプ先を自動にする)

パスワード認証時に、ジャンプ先を自動にする

このQ&Aのポイント
  • パスワード認証をする懸賞ページを作るために、PHPからJavaScriptに切り替えましたが、ランダムにジャンプするページがうまく動作していません。
  • パスワードを5つ設定する場合は、単純にvar password=' pass ';を増やすことで認証が可能でしょうか?
  • パスワード認証ページにCookieを使用し、パスワードが一致した場合にランダムなリンクをジャンプするようにしたいです。しかし、動作しないため原因がわかりません。

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

  • ベストアンサー
回答No.5

追記ですが、複数パスワードなら if($pwd==$varGET[pwd]){ } の部分を switch ($pwd) { case "Pwd1": redirect_url="aaa.html"; break; case "Pwd2": redirect_url="bbb.html"; break; case "Pwd4": redirect_url="ddd.html"; break; default: redirect_url="./"; } こんな感じにすれば飛び先を変えたりできますよ。 defaultは当てはまる条件がなかった場合なので、外れた場合に飛ばす先を入れてもOKですし、そのまま終了させてもOKです。

blueberry100
質問者

お礼

NeoMorpheusさん。 ありがとうございます! 書いていただいたコードを使用して、思う通りの動作が確認できました! 現段階では、パスワードが違いますの挙動がおかしいですが、そのあたりはなんとかしてみます。 本当にありがとうございます。 $redirect_url = array("aaa.html","bbb.heml","ccc.html"); は全部共通にする場合は、まとめることができそうですね。 勉強しながら編集してみます。 <?php define("pwd","pass"); session_start(); if(isset($_POST["action"])&&$_POST["action"]==="login"){ switch ($pwd) { case "Pwd1": $redirect_url = array("aaa.html","bbb.heml","ccc.html"); break; case "Pwd2": $redirect_url = array("aaa.html","bbb.heml","ccc.html"); break; case "Pwd4": $redirect_url = array("aaa.html","bbb.heml","ccc.html"); default: $redirect_url = array("aaa.html","bbb.heml","ccc.html"); } $varPOST = $_POST; if ( $varPOST[pwd] == $pwd ){ $i = mt_rand(0,count($redirect_url)-1); if(PASSWORD === $_POST["pwd"]){//パスワード確認 $_SESSION["TEST"] = md5(PASSWORD);//暗号化してセッションに保存 } //Redirect header ('HTTP/1.1 302 Found'); header ("Location: ".$redirect_url[$i]); break; } }else{ session_destroy();//セッション破棄 message(); } ?> <?php function message(){ print "パスワードが違います"; } ?> //以下BODY <body> <h1>認証画面</h1> <form action="" method="post"> <p> <input name="password" type="text" value="pass" /> <input name="action" type="submit" value="login" /> </p> </form> </body>

その他の回答 (4)

  • aoyama984
  • ベストアンサー率45% (253/561)
回答No.4

それなら 同じ応募コードで2回答えることは無いので 2URLを用意するより 個人的には たとえば 100問用意するとして 相手には 応募者管理番号 をセッションに渡す はじめてなら 管理番号を渡す 100問からランダムで選択して 過去問題と重複したら 再度選択 新しいクイズなら 問題表示 出題した クイズ番号 と 管理番号 をデータベースに登録する これなら同じクイズを見ることはありません 相手に渡すデータも最小限になります クイズの回答と同時に応募を完了させるなら 名前 住所 電話 メール などを入力させると思います 個人情報と 表示済みのクイズを記録しておいて照合する など

blueberry100
質問者

お礼

回答ありがとうございます。 同じクイズを絶対にみないように制御ができたら、かなり理想的です!! でも、5つのパスワードにそれぞれ5つの問題が、ランダムに振り分けられていればOKという程度しか組めそうもありません。 データベースの扱い方がさっぱりなもので・・・;; 色々と教えてくださってありがとうございます。 パスワードごとに別サイトにジャンプできるサンプルまで作ってくださって感激しました!

  • aoyama984
  • ベストアンサー率45% (253/561)
回答No.3

KAGOYA は PERSONALの契約でしょうか SQLiteなどを使う形に変更することをすすめます 2つのURLを指定することはできますが ユーザは2つ同時には見られないのでは Javascriptで window.onload window.open で別窓をひらくことはできます こういうものでいいでしょうか 2つ見せるなら 順番に  最初のページ すすむボタンで 次のページ という形で誘導するのはどうでしょうか クイズを表示するようですが 2つのURLはなぜ必要なのでしょうか これはPHPで作っています

blueberry100
質問者

お礼

KAGOYAはおそらくパーソナル契約だと思います。 もしかしたらSOHOかもしれませんが…。 具体的には、パスワードを入れると、ランダムで5つくらいのページからどれかが開かれるようにしたいのです。 クイズに応募してもらう際に、一人何度でも応募してもらえるとして、まったく同じ問題だと面白くないから、問題を書いたフォームをいくつか入れ替えたいというのが要望でして…。 パスワード1に対してA パスワード2に対してB でいいとは思うのですが、1にたいしてAorBじゃないと、1のシールを5枚持っている人が同じ問題しか見えないというのがダメなのだそうです。 今、コードはこんな風に書いています。 <?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 "認証コードが違います"; } ?>

  • aoyama984
  • ベストアンサー率45% (253/561)
回答No.2

http://aoyama984.sitemix.jp/mykensho/mykensho01.htm http://aoyama984.sitemix.jp/mykensho/mykensho.txt 11111 から 55555 の5つがあたりで 指定のページへジャンプします データベースを利用する 平文は利用しない など少し変更が必要です サーバはどこでしょうか

blueberry100
質問者

お礼

2回目の回答もいただきありがとうございました。 No1の回答と、この動きとうまくまとめられたらいいのですが…またお手すきの時に教えていただけるととてもうれしいです。

blueberry100
質問者

補足

回答ありがとうございます。 URL先の動作、素晴らしいです! 欲を言うと、55555のパスに対して、URLが2つ以上割り当てができるといいのですが、難しいでしょうか? これはPHPで書かれているのでしょうか? スクリプトをどこに書いているのか見つけられませんでした…。 サーバーはKAGOYAを使用しています。

回答No.1

リンク先が利用者に簡単に分かってしまっていいのでしょうか? javascpriptでは厳しいと思いますよ。 phpなら(答えになっていないかもですが…)、下記の様にすればOKなはずです。 ninshou.php <?php //パスワード $pwd = "qwerty"; //転送先 $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 ('HTTP/1.1 302 Found'); header ("Location: ".$redirect_url[$i]); } ?> デバッグや細かい所までは作れてはいないかもしれませんが、ご参考になればと。

blueberry100
質問者

お礼

NeoMorpheusさんが書いてくれたコードをもとに、現在試行錯誤中です。 PHPで組んでみることにしました! アドバイスありがとうございます。 レス等で書いてあるコードで動かなくていろいろ調べているのですが、またお時間があったら教えてくださるとうれしいです。

blueberry100
質問者

補足

回答ありがとうございます。 ソースを解析できる人に、リンク先がわかってしまってもOKです。 そこまで精巧なシステムでやるほどでもないので。 ただ、懸賞らしくパスワードを入れてパスワードを知っている人にだけ見ることができるというプロセスを踏みたいのです。 そのプロセスを踏んだうえで、同じ人がアクセスしても懸賞というかクイズなのですが、クイズの問題がランダムに切り替わっていると理想的です。 クイズの問題はフォームに載せてしまうので、ページを複数用意したいと考えています。 やはりPHPの方がとてもスッキリできますね。 パスワード1つに対して、複数のページをジャンプ先に指定されてますが、パスワードを2つにすることもできるでしょうか? PHPバージョンもこれから書いてみます。

関連するQ&A

専門家に質問してみよう