• ベストアンサー
  • すぐに回答を!

WEBサイトへのログイン画面の設置について。

  • 質問No.5027801
  • 閲覧数140
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 90% (10/11)

現在運営しているWEBサイトのページに、パスワードのみのログイン画面へのリンクを張り、
PHPは下記(http://△△△.com/test/login.php)に設置し、パスワード認証が成功した場合は
会員専用ページ(http://△△△.com/test/○○○.html)に飛び、
失敗の場合はエラーページ(http://△△△.com/test/×××.html)に飛ばすようにしたいと思っております。

以前ソースを教えていただいて、下記のように設置してみたのですが、
任意のページに飛ぶことができません。

ローカルでのテストでは問題なく動作したのですが、サーバにアップしてテストしてみると、
パスが「http://△△△.com/test/login.php」から「http://△△△.com/test/http://△△△.com/test/login.php」に変わり、
ページが「WEBページが見つかりません」のエラーが出ます。

私はまったく知識がありませんので、どこがおかしいのか見当がつきません。
知識をお持ちの方、どなたかご教示いただけませんでしょうか。
よろしくお願い申し上げます。

<?php
$post_pass = $_POST['passwd'];
$user_pass = "0000";
$ok = "./http://△△△.com/test/○○○.html";
$error = "./http://△△△.com/test/×××.html";
$script = "./http://△△△.com/test/login.php";
$doc_title = "ログイン画面";

if ( $_POST['pass_check'] === "true" && $post_pass != "" ) {
if($user_pass == $post_pass){
header("Location: $ok");
}else{
header("Location: $error");
}
}

?>
<html>
<head>
<title><?php echo $doc_title; ?></title>
<meta http-equiv="Content-Type" content="text/html;Charset=Shift_JIS">
<script type="text/javascript">
<!--
function check() {
if(document.formxx.passwd.value.length == 0) {
alert("パスワードが入力されてません");
return false;
}
return true;
}
//-->
</script>
</head>
<body>

<h3><?php echo $doc_title; ?></h3>

<form action="<?php echo $script; ?>" method="post" name="formxx">
<input type="password" name="passwd" size="15">
<input type="hidden" name="pass_check" value="true">
<input type="submit" value=" ログイン " onClick="check()">
</form>


</body>
</html>

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

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

ベストアンサー率 79% (381/480)

質問者さんが記載したスクリプトをそのままコピーして試してみましたが、正常に画面が遷移するようでした。

header("Location・・・
の部分を一度、
echo "OK";
echo "NG";
などというようにその条件文内に画面が遷移しているかを確かめてみてください。

また、何か記述にミスがないか、
ini_set('display_errors', 'On');
をPHPスクリプトの先頭に記述し、エラーを表示するようにして見てください。
お礼コメント
account199

お礼率 90% (10/11)

ご教示いただき、ありがとうございます。

お教えいただきました通り、「ini_set('display_errors', 'On');」
にてエラーを確認いたしましたところ、2箇所にエラーが出ました。

更に、「phpinfo();」で調べましたところ、サーバ側のregister_globalsがoffになっておりましたので、
「$passwd」の2箇所を「$_POST['passwd']」に変更いたしましたところ、動作させることができました。
私はまったく知識がありませんのでよく理解しておりませんが、どうやら環境の影響だったようです。

エラー表示の方法等も存じませんでしたので、大変勉強になりました。
色々とご教授いただきまして、誠にありがとうございました。
投稿日時:2009/06/10 12:32

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 79% (381/480)

質問者さんの、スクリプト中の
$ok、$error、$script
の先頭の、「./」をはずしてください。
こちらの指定は現在のパスからの相対を見る指定です(相対パス)

http://example.com/hoge/
に対して、「./test.html」という指定をされた場合
http://example.com/hoge/test.html
を指定するということになり、つまり今表示されているスクリプト(とかHTMLとか)と同じディレクトリにあるファイルを指します。
なので、
http://△△△.com/test/
に対して、$scriptのように指定すると
△△△.comのtestディレクトリの中にある「http://△△△.com/test/login.php」ファイルを指定することになってしまいます。
質問者さんの場合の「http://」から始まるパスは絶対パスなので、「./」や「../」などの相対パスを先頭に記述する必要はありません。
補足コメント
account199

お礼率 90% (10/11)

ご回答いただきまして、誠にありがとうございます。

ご指摘いただきました通り、$ok、$error、$scriptの3ヶ所にある「./」をはずして動作確認してみました。
しかしながら、パスワードを入力しログインボタンを押しても、任意のページに飛ばず、今回はブラウザに表記されているパスは「http://△△△.com/test/login.php」のまま変化しませんでした。

詳細にご解説いただきましたのに、私の知識不足で上手くいっていないのかも知れません。

その他考えられる可能性をご指摘いただけませんでしょうか。
宜しくお願い申し上げます。
投稿日時:2009/06/09 09:37
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ