![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
最近phpを始めたばかりの初心者です。
簡易的なアクセス認証?のようなものを作っています。
実行すると、フォームが現れ、パスワード「12345」を入れると
includeのindex.incを表示し、
パスワードが合っていなければ「パスワードが違います」と表示させるように以下のコードを書きました。(かなり稚拙なコードで見難いとは思いますが。。)
<?php
$pass = $_POST['pass'];
if ($pass=="12345"){
include("index.inc");
exit;
}elseif ($pass!="12345"){
echo 'パスワードが違います';
}else{
echo '
<form method="post" action="';
echo $PHP_SELF;
echo '">
<input type="password" name="pass"></form>
パスワードを入れてください';
}?>
で、一応は動作するのですが、ページをリロードさせるとブラウザから「フォームのデータを再送信します」旨のアラートが出ます。
ここで困っています。
パスワードを間違った場合、ブラウザのバックで戻る事で、入力フォームには戻れますが、もしそのままリロードしてしまうと、誤ったデータがキャッシュに入ったまま再入力されてしまい、再度このphpに戻っても「パスワードが違います」という表示のままになってしま、フォームが現れません。
また、一旦ページを閉じたり、別のページに飛んでも、このphpに入ったときには再度パスワードを入力させたいと思います。
ブラウザのキャッシュに問題があると思い、
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-control" CONTENT="no-cache">
<META http-equiv="Expires" content="0">
を追加してみたのですが、うまく行きません。
どのようにしたら良いのでしょうか?
なるべく簡易的なものを考えています。
が、やはりセッションなどを使う事になるのでしょうか。。
No.1ベストアンサー
- 回答日時:
パスワードが渡されればチェックをして、
パスワードが渡されない場合は入力欄を表示するようにすればいいと思われます。
if($_POST['pass']){
#Pass Check
if ($_POST['pass'] == '12345') {
include("index.inc");
exit;
} else {
echo "NG";
echo "<form action=\"xx.php\" method=\"POST\">";
echo "<input type=\"submit\" value=\"戻る\">";
echo "</form>";
}
} else {
echo <<<HTML
<form action="xxx.php" method="POST">
<input type="password" name="pass">
</form>
HTML
}
むしろ NG のところにパスワード入力フォームを表示させればはやいんですけどもね。
あと、パスワードは暗号化したほうが安全です。
遊び程度ならいりませんけどもね。
参考URL:http://php.s3.to/man/function.crypt.html
うまく行きました。
キャッシュ云々とか難しく考えなくても、NGの所にもパスワードの入力フォーム入れるだけで良かったんですね。
それにしても自分のコードの幼稚さがよくわかりました。。
もう少し勉強します。
大変参考になりました。
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォーム送信後の更新ボタンで...
-
テキストリンクをPOST送信したい
-
セッションを使わずに遷移先画...
-
GETとPOST以外のデータの渡し方...
-
ボタンをクリックでPHP文を実行
-
PHPの質問:フォームから受け取...
-
PHPでURLにジャンプするには?
-
POSTデータをフォームに残す方法
-
formの外にあるチェックボック...
-
フォームで送られたデータのキ...
-
フォームで作った送信ボタンが...
-
PHP ボタンが押されたら処理を...
-
laravelを利用してコントロール...
-
1つのphpファイルで、入力フォ...
-
チェックボックスを使った複数...
-
CGI Perlでの認証について
-
複数行のデータ一括更新に関して
-
PHP で画面の一部だけを変えたい。
-
phpでのセレクトボックスの値を...
-
php セレクトボックス 値取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPでURLにジャンプするには?
-
フォーム送信後の更新ボタンで...
-
PHPのエラーの解消法について教...
-
テキストリンクをPOST送信したい
-
JavaScript変数をPHPへ渡す
-
セッションを使わずに遷移先画...
-
PHPでファイルアップロード時に...
-
フォームで作った送信ボタンが...
-
phpで、フォームのラジオボタン...
-
$_POST['hoge']のデータをフラ...
-
ボタンをクリックでPHP文を実行
-
ローカルにあるhtmlのフォーム...
-
POSTデータをフォームに残す方法
-
フォームでの記入項目
-
Submit(送信ボタン)を押した...
-
なぜ、unexpected T_VARIABLEに...
-
formの外にあるチェックボック...
-
PHP 入力フォームにて半角スペ...
-
サブウィンドウのFORM内データ...
-
アマゾンのような評価の星を選...
おすすめ情報