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; }
コメント