警告システムをコーディングしました。
しかし、システム自体を見るのではなく、システムが実際にアラート/エラーをブラウジングしているユーザーに送信したことをシステムがどのように認識するかを見てみましょう。
?alert=name にランダムにアクセスすると、エラーが発生せずに「エラーなし」と表示されるようにしました。ただし、システムが ?alert=name に移動するように要求すると、エラーがエコーされます。
投稿の処理方法
function postComment() {
if (!empty($_POST['name']) || !empty($_POST['comment'])) {
$comment = mysql_real_escape_string(htmlentities($_POST['comment']));
$guest = mysql_real_escape_string(htmlentities($_POST['name']));
}
$guestId = 1;
if (empty($guest)) {
$alert = 1;
return header('location: index.php?alert=name');
}
if (empty($comment)) {
$alert = 2;
return header('location: index.php?alert=comment');
}
if (!isset($_COOKIE['alreadyPosted'])) {
mysql_query("INSERT INTO `comments` (`comment_guest`, `guest_id`, `comment`, `comment_date`, `comment_time`) VALUES ('$guest', '$guestId', '$comment', CURDATE(), CURTIME())") or die(mysql_error());
header('Location: index.php?action=sucess');
setcookie(alreadyPosted, $cookieId+1, time() + 60);
} else {
$alert = 3;
header('location: index.php?alert=delay');
}
}
ご覧のとおり、ユーザーが本当にそのエラーを受け取っているかどうかを確認するために、$alert をエラー番号に設定します。
そして、彼がエラーを受け取っているかどうかを確認するには、これを使用します:
if (isset($_GET['alert']) == 'name') {
if ($alert == 1) {
echo 'hai';
} else {
echo 'No errors';
}
}
なぜ私がこのようにしているのか疑問に思うでしょう..投稿に1つの機能を使用し、投稿機能がフォームの下にあり、アラートをフォームに表示したいからです。
問題:
変数は、関数の実行時に想定される数値に設定されないか、または..何かがそれをブロックしています..わかりません..
私の推測:エラーのチェックは、変数が設定される前に postComment 関数まで行われるのでしょうか?
<?php
if (isset($_GET['alert']) == 'name') {
if ($alert == 1) {
echo 'hai';
} else {
echo 'No errors';
}
}
?>
<form action="index.php" method="POST">
<input type="text" name="name" placeholder="Your name here" class="field">
<textarea class="textarea" name="comment" placeholder="Your comment here..."></textarea>
<input type="submit" name="send" class="blue_button" value="Post Comment">
</form><a href="#"><input type="submit" name="" id="margin" class="blue_button" value="See all messages"></a>
<br />
<?php
//Show the comments
showComments();
if (isset($_POST['send'])) {
postComment();
}
if (isset($_GET['delete']) == "comment"){
deleteComment();
}
echo '<br />';
?>
もしそうなら、解決策は何ですか?ありがとう!
mysql_ 関数の話から始めないでください。了解しました。代わりに PDO を使用しますが、現時点ではテスト目的で mysql_ を使用しています。