前提・実現したいこと
パスワードを入力するとデータを出力するアプリを作成しました。
間違ったパスワードを入力すると、エラーメッセージが表示される仕様なのですが、
その後、正しいパスワードを入力してもエラーメッセージが消えません。
(データは出力されます)
リダイレクト先のdownload.phpはダウンロード用のコードだけを記述したファイルです。
そのため、見た目上はページ遷移は行われず、パスワードを入力するとDLが始まるように見えます。
このままの仕様で、正しいパスワード入力時にエラーメッセージを消す方法はないでしょうか?
ご教授のほどよろしお願い申し上げます。
該当のソースコード
php
1<?php 2$err = null; 3define('PASS','pass'); 4 5if(isset($_POST['submit'])){ 6 unset($err); 7 if(!empty($_POST['pass']) && $_POST['pass']===PASS){ 8 header("Location:download.php"); 9 exit; 10 }else{ 11 $err= "パスワードが違います"; 12 } 13} 14?> 15 16<!DOCTYPE html> 17<html lang="ja"> 18<head> 19 <meta charset="UTF-8"> 20 <title>Document</title> 21</head> 22<body> 23 <form action="" method="post"> 24 <?php if( isset($err) ): ?> 25 <p class="err"><?php echo $err; ?></p> 26 <?php endif; ?> 27 <p>ダウンロード用パスワードを入力ください</p> 28 <div class=""> 29 <label for="pass">パスワード</label> 30 <input type="password" name="pass" value=""> 31 </div> 32 <button type="submit" name="submit">ダウンロード</button> 33 </form> 34</body> 35</html>
試したこと
リダイレクト(header("Location:download.php");)を削除し、
正しいパスワードを入力するとエラーメッセージは消えました。
この辺りが原因のようなきがしているのですが。。。
補足情報(FW/ツールのバージョンなど)
php ver 7.4.0
20/07/15
html部分を追記しました。
質問内容のエラーメッセージは、phpのsyntax errorではなく、
正しいパスワードが入力されなかった際の分岐処理で出力(自分で設定)している
エラーメッセージです。
上記コードの中の下記の記述部分です。
html
1<?php if( isset($err) ): ?> 2 <p class="err"><?php echo $err; ?></p> 3<?php endif; ?>
間違ったパスワードが入力されると「パスワードが違います」と表示されます。
紛らわしく申し訳ございません。
よろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー