Q1.cookieを利用して、訪問回数を表示するプログラムを作成せよ。

[解答例]
<?php
$count=isset($_COOKIE['count'])? $_COOKIE['count']:0;
setcookie('count',++$count,time()+60*60*24*14);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PHPLesson</title>
</head>
<body>
<p>
<?=$count?>回目の訪問です。
</p>
</body>
</html>
Q2.Q1と同様の処理をsessionを用いて実現せよ。
[解答例]
<?php session_start(); $_SESSION['count']=isset($_SESSION['count'])? ++$_SESSION['count']:1 ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PHPLesson</title> </head> <body> <p> <?=$_SESSION['count']?>回目の訪問です。 </p> </body> </html>
Q3.sessionをもちいて以下のようなお問い合わせフォームを作成しよう。
[実行例]
●スタート画面

●フォームに入力する

●確認ボタンを押すと、確認画面に遷移する。

●戻るを押すと、フォームに戻る(その際、入力内容が表示されている)

●内容を編集する

●確認を押す

●送信を押すと遷移してメッセージが表示される。

●送信後、再びフォーム画面をリクエストすると。入力がクリアされている。

[解答例]
●form.php
<?php session_start(); $name=isset($_SESSION['name'])? $_SESSION['name']:''; $email=isset($_SESSION['email'])? $_SESSION['email']:''; $memo=isset($_SESSION['memo'])? $_SESSION['memo']:''; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"> <link rel="stylesheet" href="./css/main.css"> <title>PHPLesson</title> </head> <body> <h1>お問い合わせフォーム</h1> <form action="confirm.php" method="post"> <table> <tr><th>お名前</th><td><input type="text" name="name" value="<?=$name?>"></td></tr> <tr><th>メールアドレス</th><td><input type="email" name="email" value="<?=$email?>"></td></tr> <tr><th>お問い合わせ内容</th><td><textarea name="memo"><?=$memo?></textarea></td></tr> </table> <input type="submit" value="確認" class="button"> </form> </body> </html>
●confirm.php
<?php session_start(); $_SESSION['name']=isset($_POST['name'])? htmlspecialchars($_POST['name']):''; $_SESSION['email']=isset($_POST['email'])? htmlspecialchars($_POST['email']):''; $_SESSION['memo']=isset($_POST['memo'])? htmlspecialchars($_POST['memo']):''; ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"> <link rel="stylesheet" href="./css/main.css"> <title>PHPLesson</title> </head> <body> <h1>お問い合わせフォーム</h1> <p class="normalP">以下の内容でよろしいですか?</p> <table> <tr><th>お名前</th><td><?=$_SESSION['name']?></td></tr> <tr><th>メールアドレス</th><td><?=$_SESSION['email'] ?></td></tr> <tr><th>お問い合わせ内容</th><td><?=nl2br($_SESSION['memo']) ?></td></tr> </table> <div id="btBox"><a href="form.php" class="button2">戻る</a><a href="send.php" class="button2">送信</a></div> </body> </html>
●send.php
<?php
session_start();
//sessionを空にする。
$_SESSION = array();
//cookieを削除する
if (isset($_COOKIE["PHPSESSID"])) {
setcookie("PHPSESSID", '', time() - 3600);
}
//session自体を破棄する
session_destroy();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css">
<link rel="stylesheet" href="./css/main.css">
<title>PHPLesson</title>
</head>
<body>
<h1>お問い合わせフォーム</h1>
<p class="normalP">送信完了!</p>
</body>
</html>
●css/main.css
h1{
box-sizing:border-box;
margin-top:20px;
width:700px;
margin:20px auto;
background:#f4a895;
color:white;
padding:10px;
border-left:10px solid #e33234;
}
table{
width:700px;
margin:0 auto;
border:1px solid #555;
}
th{
background:#f4a895;
color:white;
border:1px solid #555;
padding:10px;
}
td{
border:1px solid #555;
padding:10px;
}
input{
width:100%;
}
textarea{
width:100%;
height:100px;
}
.button{
width:200px;
height:50px;
display:block;
margin:30px auto;
border-radius:10px;
border:2px solid #f4a895;
color:#f4a895;
background:white;
}
.button:hover,
.button2:hover{
cursor:pointer;
background:#f4a895;
color:white;
transition-duration: 300ms;
}
.normalP{
width:700px;
margin:20px auto 10px;
}
#btBox{
text-align:center;
}
.button2{
display:inline-block;
width:200px;
height:50px;
margin-top:30px;
border-radius:10px;
border:2px solid #f4a895;
color:#f4a895;
background:white;
line-height:50px;
text-decoration:none;
}
.button2:first-child{
margin-right:30px;
}
コメント