他のページでも同じ方法を使用しています。 たとえば、ログインページでこれを使用します。ユーザーがログインフォームを入力すると、データベースに問い合わせるためにphpファイルが呼び出されます。クエリが失敗すると、セッション変数にエラーが設定され、ログインページにリダイレクトされます。ログインページには、そのセッション変数が設定されているかどうかを確認する場所があります。存在する場合は、エラーメッセージが表示されます。エラーメッセージ付きのPHPページリダイレクトは、ページ更新後にのみ表示されます。
エラーメッセージを表示するのと同じ方法を再利用しています。登録しようとしているユーザーの方が、このページに既にサインアップしている場合、データベースを照会するphpファイルでエラーが発生します。これと同じ方法は、ログインページの場合と同じように動作します。ただし、ページリフレッシュ後にのみ表示されますが、これは理想的ではありません。ここで
はアップに署名するユーザーのためのHTMLを保持しているPHPファイルであり、それが設定されていた場合、エラーメッセージが表示されます。
<?php
if(isset($_SESSION['signUpError'])) {
$error = $_SESSION['signUpError'];
unset($_SESSION['signUpError']);
echo '<div class="alert alert-warning alert-dismissible"
role="alert" id="logError" style="width:600px; margin-left:auto; margin-right:auto;">
<span type="button" class="close" data-dismiss="alert" aria-
label="Close"><span aria-hidden="true">×</span></span>
<strong>' . $error . '</strong></div>';
}else{
$error = "";
}
?>
そして、彼らがサインアップした後に呼ばれていますPHPファイル:
ログインページの<?php
session_start();
include("../includes/databaseHandler.inc.php");
$title = $_POST['title'];
$newTitle = $_POST['newTitle'];
$id = $_POST['id'];
$joinName= "%".$_POST['joinName']."%";
if($stmt = mysqli_prepare($conn, "SELECT title FROM rooms WHERE title LIKE ?")){
mysqli_stmt_bind_param($stmt, 's', $joinName);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if($row = mysqli_fetch_assoc($result)){
$_SESSION['signUpError'] = "This Dentist/Hygienist is already assigned to a room!";
header('Refresh:5; url = ../dentist_home.php');
exit;
}
}
if($stmt = mysqli_prepare($conn, "UPDATE rooms SET title = ? WHERE title = ? AND id = ?")){
mysqli_stmt_bind_param($stmt, "sss", $newTitle, $title, $id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
}
mysqli_close($conn);
?>
私は、このページには、ページが更新される場合でも、一切のエラーが表示されないことを使用している場合、私はheader("Location: file_name.php");
を使用しますが。私はまだPHPに新しいことがあるので、何が間違っているのかについての洞察はすばらしいものになるでしょう。
です。セッションはセッションの開始後にのみ設定されました –
これは、エラーメッセージが表示されるページのsession_start()を呼び出さなかったことを意味しますか?それがあなたが思っているものなら、セッション開始を呼びましたが、違いがあれば、そのページの上部にある別のPHPブロックにあります。 – Frank