/* Google Analytics ▽ */ /* Google Analytics △ */

WEB制作の勉強メモ / 猫脳人間

HTML CSS JavaScript ActionScript jQuery WordPress PHP Illustrator Photoshop Flash … 猫サイズの脳でも覚えるぞ と…

PHPの授業(4日目) (ソースのみ説明無し)

PHP初学者の記述です。
教えてもらっている途中の記述ですので、まだまだ実際には使える記述にはなっていません。

<?php

function h($str){
  return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
} // h() →自作関数、ユーザー定義関数 と言う

session_start();
$name='';
$email='';
$message = '';

$name_error='';
$email_error='';
$message_error='';

$name = @$_SESSION['name'];
$email = @$_SESSION['email'];
$message = @$_SESSION['message'];

$name_error = @$_SESSION['name_error'];
$email_error = @$_SESSION['email_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>
<?php
function h($str){
  return htmlspecialchars($str,ENT_QUOTES,'UTF-8');
} // 自作関数、ユーザー定義関数 と言う

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_start();
$_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;

?>

<!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); echo h($name_error); ?>
</td>
</tr>

<tr>
<th>Eメール: </th>
<td>
<?php echo h($email); echo h($email_error); ?>
</td>
</tr>

<tr>
<th>お問合せ内容: </th>
<td>
<?php echo nl2br(h($message)); echo nl2br(h($message_error)); ?>
</td>
</tr>

</tbody>
</table>


<p><a href="index.php"><strong>【 戻る 】</strong></a></p>

<?php
if($success){
 echo '<p><a href="send.php"><strong>【 送信 】</strong></a></p>';
}
?>
</section>

<footer>
<p><small>(c) S.S</small></p>
</footer>

</div><!-- /#container -->


</body>
</html>
<?php
session_start();

if(!$_SESSION['success']){
  header('Location:index.php');
  exit;
}

$name = $_SESSION['name'];
$email = $_SESSION['email'];
$message = $_SESSION['message'];

mb_send_mail('メール@アドレス','お問合せメール',$name.$mail.$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>

<p>確認画面( check.php ) から情報を受け取って、
それを出力表示。</p>

<p>お問合せありがとうございました。</p>



</body>
</html>