SESSIONを使用したメールフォームについて - PHPプロ!Q&A掲示板
/* form.php */
- //セッションを開始
- session_start();
- <html>
- <body>
- <form action="complete.php" method="post">
- <dl>
- <dt>名前</dt>
- <dd>
- echo $_SESSION['err_name'];
- <input type="text" size="20" name="name" value=" echo $_SESSION['name']; " />
- </dd>
- <dt>コメント</dt>
- <dd>
- echo $_SESSION['err_comment'];
- <textarea name="comment" rows="5" cols="40"> echo $_SESSION['comment']; </textarea>
- </dd>
- </dl>
- <input type="hidden" name="contact" value=" $_SESSION['contact']; " />
- <input type="submit" name="submit" value="確認" />
- </form>
- </body>
- </html>
/* complete.php */
- //セッションを開始
- session_start();
- $name = $_POST['name'];
- $comment = $_POST['comment'];
- $contact = $_POST['contact'];
- if (isset($contact)) {
- // 名前欄をチェック
- if (empty($name)) {
- $_SESSION['err_name'] = "<p>お名前は必須項目です。</p>";
- }
- // 質問・コメント欄をチェック
- if (empty($comment)) {
- $_SESSION['err_comment'] = "<p>質問・コメントを入力してください。</p>";
- }
- if (!count($contact)) {
- // POSTされたデータとエラーメッセージをセッション変数に保存
- $_SESSION['name'] = $name;
- $_SESSION['comment'] = $comment;
- $_SESSION['contact'] = $contact;
- header("Location: form.php");
- exit;
- }
- }
- <html>
- <body>
- <dl>
- <dt>名前</dt>
- <dd> echo $name; </dd>
- <dt>内容</dt>
- <dd> echo nl2br($comment); </dd>
- </dl>
- </body>
- </html>
以上のソースなのですが、空入力でもcomplete.phpに通ってしまいます。
ページを戻るとエラーが表記されるようになるのですが・・・
まだ勉強して間もないため、違っているとこのソースなどをご教授いただければと思います。
ご面倒かと思いますが、よろしくお願いします。
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。