PHPの授業(5日目)
index.php
<?php require_once dirname(__FILE__).'/func.php'; $name=''; $email=''; $message = ''; $name_error=''; $email_error=''; $message_error=''; if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } if(isset($_SESSION['email'])){ $email = $_SESSION['email']; } if(isset($_SESSION['message'])){ $message = $_SESSION['message']; } if(isset($_SESSION['name_error'])){ $name_error = $_SESSION['name_error']; } if(isset($_SESSION['email_error'])){ $email_error = $_SESSION['email_error']; } if(isset($_SESSION['message_error'])){ $message_error = $_SESSION['message_error']; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>お問合せフォーム|初めてのPHP</title> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <div id="container"> <header> <h1>お問合せフォーム</h1> </header> <section> <form action="check.php" method="post"> <table> <tbody> <tr> <th><label for="name">お名前: <br> <span>(20文字以内)</span></label></th> <td><input type="text" name="name" id="name" value="<?php echo h($name); ?>"> <?php if(!empty($name_error)){ echo "<span> {$name_error} </span>"; } ?> </td> </tr> <tr> <th><label for="email">Eメール: <br> <span>(25文字以内)</span></label></th> <td><input type="text" name="email" id="email" value="<?php echo h($email); ?>"> <?php if(!empty($email_error)){ echo "<span> {$email_error} </span>"; } ?> </td> </tr> <tr> <th><label for="message">お問合せ内容: <br> <span>(150文字以内)</span></label></th> <td><textarea name="message" id="message" row="5"><?php echo h($message); ?></textarea> <?php if(!empty($message_error)){ echo "<span> {$message_error} </span>"; } ?> </td> </tr> </tbody> </table> <input type="submit" value=" 確認 "> </form> </section> <footer> <p><small>(c) Silent Cait</small></p> </footer> </div><!-- /#container --> </body> </html>
check.php
<?php require_once dirname(__FILE__).'/func.php'; if(!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['message'])) { header('Location:index.php'); exit; } // 値が無い場合に、index.php に飛ばす // var_dump($_POST); $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $success = true; $name_error=''; $email_error=''; $message_error=''; // 空文字を代入した if(strpos($email,'@') ===false){ $email_error = 'Eメールアドレスに 「@マーク」 が含まれていません'; $success = false; } if(strlen($email)!=mb_strlen($email,'UTF-8')){ $email_error = 'Eメールアドレスに全角文字が含まれています'; $success = false; } if(mb_strlen($name,'UTF-8')>20){ $name_error = 'お名前が長すぎます'; $success = false; } if(mb_strlen($email,'UTF-8')>25){ $email_error = 'Eメールアドレスが長すぎます'; $success = false; } if(mb_strlen($message,'UTF-8')>150){ $message_error = '本文が長すぎます'; $success = false; } if(empty($name)){ $name_error= '名前が入力されていません'; $success = false; $email_error= 'Eメールアドレスは必須項目です'; $success = false; $message_error='お問い合わせ内容は必須項目です'; $success = false; } $_SESSION['name']=$_POST['name']; $_SESSION['email']=$_POST['email']; $_SESSION['message']=$_POST['message']; $_SESSION['success'] = $success; $_SESSION['name_error'] = $name_error; $_SESSION['email_error'] = $email_error; $_SESSION['message_error'] = $message_error; if(!$success){ header('Location:index.php'); exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>お問合せ内容確認画面|PHP2日目</title> </head> <link rel="stylesheet" type="text/css" href="css/style.css"> <body> <div id="container"> <header> <h1>お問合せフォーム</h1> </header> <section> <table> <tbody> <tr> <th>お名前: </th> <td> <?php echo h($name); ?> </td> </tr> <tr> <th>Eメール: </th> <td> <?php echo h($email); ?> </td> </tr> <tr> <th>お問合せ内容: </th> <td> <?php echo nl2br(h($message)); ?> </td> </tr> </tbody> </table> <p><a href="index.php"><strong>【 戻る 】</strong></a></p> <p><a href="send.php"><strong>【 送信 】</strong></a></p> </section> <footer> <p><small>(c) S.S</small></p> </footer> </div><!-- /#container --> </body> </html>
send.php
<?php require_once dirname(__FILE__).'/func.php'; // この一行を記述し func.php を読み込むんで func.php の内容を実行 /*var_dump($_SESSION['success']); exit; エラーチェックに使うソース*/ if(!$_SESSION['success']){ header('Location:index.php'); exit; } $name = $_SESSION['name']; $email = $_SESSION['email']; $message = $_SESSION['message']; $_SESSION = array(); // 配列に対して array() をかけると 配列が空になる mb_send_mail('xxxxxx@gmail.xxxx.com','お問合せメール',$name.$email.$message); ?> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>メール送信終了|send.php</title> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <div id="container"> <h1>メール送信終了</h1> <p>以下の内容でメールが送信されました。</p> <p>お問合せありがとうございました。</p> <table> <tbody> <tr> <th>お名前: </th> <td> <?php echo h($name); ?> </td> </tr> <tr> <th>Eメール: </th> <td> <?php echo h($email); ?> </td> </tr> <tr> <th>お問合せ内容: </th> <td> <?php echo nl2br(h($message)); ?> </td> </tr> </tbody> </table> <p><a href="index.php">トップに戻る</a></p> </div><!-- /#container --> </body> </html>
func.php
<?php /* 繰り返し記述が出てくる記述をこのファイルに記述し、 require_once dirname(__FILE__).'/func.php'; の記述でこのファイルを呼び出す */ function h($str){ return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); } // h() //→自作関数、ユーザー定義関数 と言う session_start();