前提・実現したいこと
お問い合わせフォームを作成中、エラーメッセージを表示させることなどのセキュリティ対策でバリデーションとクロスサイトスクリプティング(XSS)を実装後、確認ボタンを押すと移行したページが真っ白の状態。
お問い合わせページは入力画面、確認画面、完了画面を一つのファイルで作成。
発生している問題・エラーメッセージ
画面が真っ白 URLは同じ
エラーメッセージなし
該当のソースコード
<?php session_start(); $mode='input'; $errmessage=array(); if (isset( $_POST['back']) && $_POST['back']) { //何もしない } else if(isset($_POST['confirm']) && $_POST['confirm']){ //確認画面 if(!$_POST['fullname']){ $errmessage[]="名前を入力してください"; } else if(mb_strlen($_POST['fullname'])>100 ){ $errmessage[]="名前は100文字以内にしてください"; } $_SESSION['fullname']=htmlspecialchars($_POST['fullname'],ENT_QUOTES); if(!$_POST['email']){ $errmessage[]="Eメールを入力してください"; } else if(mb_strlen($_POST['email'])>200 ){ $errmessage[]="Eメールは200文字以内にしてください"; } else if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){ $errmessage[]="メールアドレスが不正です"; } $_SESSION['email']=htmlspecialchars($_POST['email'], ENT_QUOTES); if(!$_POST['message']){ $errmessage[]="お問い合わせ内容を入力してください"; } else if(mb_strlen($_POST['message'])>500 ){ $errmessage[]="お問い合わせ内容は500文字以内にしてください"; } $_SESSION['message']=htmlspecialchars($_POST['message'],ENT_QUOTES); if($errmessage ){ $mode='input'; } else{ $mode='confirm'; } } else if ( isset( $_POST[ 'send' ] ) && $_POST[ 'send' ] ) { //送信ボタンを押したとき $message = "お問い合わせを受け付けました。\r\n" . "名前:" . $_SESSION[ 'fullname' ] . "\r\n" . "Eメール:" . $_SESSION[ 'email' ] . "\r\n" . "お問い合わせ内容:\r\n" . preg_replace( "/\r\n|\r|\n/", "\r\n", $_SESSION[ 'message' ] ); mail( $_SESSION[ 'email' ], 'お問い合わせありがとうございます', $message ); mail( 'pbox_sendai@yahoo.co.jp', 'お問い合わせありがとうございます', $message ); $_SESSION = array(); $mode = 'send'; } else { $_SESSION[ 'fullname' ] = ""; $_SESSION[ 'email' ] = ""; $_SESSION[ 'message' ] = ""; } ?> <!DOCTYPE html> <html lang="la"> <head> <meta charset="utf-8"> <title>パラダイスBOX お問い合わせ</title> <meta http-equiv="Expires" content="Sun, 1 Jan 1995 00:00:00 GMT"> <meta http-equiv="Cache-Content" content="no_cache"> <meta name="Date.Modified" content="2003.10.16"> <meta name="keyword" content="仙台市,利府,セルDVD,インディーズ,アダルトグッズ,コスチューム,おとなのおもちゃ,パラダイスBOX"> <meta name="Description" content="パラダイスBOXは、仙台市泉区、利府町で、広い売場でセルDVD(インディーズ・メジャー)(新品・中古) アダルトグッズ(大人のおもちゃ・バイブ・ローター・オナホール)・コスチューム・使用済下着・使用済制服などを販売している大人の楽園です。"> <meta name="Author" content="endou"> <meta name="robots" content="index,follow"> <meta http-equiv="content-style-type" content="text/css"> <link rel="stylesheet" href="base2.css" type="text/css"/> <link rel="stylesheet" href="base3.css" type="text/css"/> <link href="contact_form.css" rel="stylesheet" type="text/css"/> </head> <body> <?php if( $mode == 'input'){ ?> <!-- 入力画面 --> <div id="top"> <div id="header"> <a href="index.html"><img src="images/logo01.jpg" alt="" /></a> </div> <div id="globalnavi"> <ul> <li id="menu1"><a href="top.html"></a> </li> <li id="menu2"><a href="event01.html"></a> </li> <li id="menu3"><a href="contents01.html"></a> </li> <li id="menu4"><a href="contents02.html"></a> </li> <li id="menu5"><a href="point.html"></a> </li> <li id="menu6"><a href="bosyutop.html"></a> </li> </ul> </div> <div id="icatch" align="center"><img src="images/info_top.jpg" width="780" height="150" alt=""/> </div> <div id="contents"> <div id="main_form"> <section id="main_secion"> <?php if( $errmessage ){ echo '<div style="color:red;">'; echo implode('<br>',$errmessage ); echo '</div>'; } ?></body> </html><h2 class="h">お問い合わせ</h2> <form action="contact_form.php" method="post" class="mainForm"> <table> <tbody> <tr> <th>お名前 <span class="hisuu">(必須)</span></th> <td><input type="text" name="fullname" value="<?php echo $_SESSION['fullname'] ?>"></td> </tr> <tr> <th>メール <span class="hisuu">(必須)</span></th> <td><input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"></td> </tr> <tr> <th>ご用件</th> <td> <select name="mkind"> <option value="1">選択してください</option> <option value="2">商品の問い合わせ</option> <option value="3">採用について</option> <option value="4">その他の問合せ</option> </select> </td> </tr> <tr> <th>お問合せ内容 <span class="hisuu">(必須)</span></th> <td><textarea cols="40" rows="8" name="message"><?php echo $_SESSION['message'] ?></textarea> </td> </tr> </tbody> </table> <div class="mainFormBtn"> <input type="submit" name="confirm" value="確認"> </div> </form> </section> </div> <!-- main end --> <div id="sub"> <div class="section"> <p><a href="tenga.html"><img src="images/side_t2.jpg" width="220" height="330" alt="" / id="i3"></a> </p> <p> <a href="bosyutop.html#bosyu01"><img src="images/side004.JPG" alt="" / id="i3"></a> </p> </div> <!-- sub end --> </div> <!-- contents end --> </div> </div> <!-- top end --> <div id="footMenu"> <ul> <li><a href="top.html">トップページ</a> </li> <li><a href="event01.html">イベント情報</a> </li> <li><a href="contents01.html">仙台店</a> </li> <li><a href="contents02.html">利府店</a> </li> <li><a href="point.html">ポイントカード</a> </li> <li><a href="bosyutop.html">採用情報</a> </li> </ul> <div id="footer"> <address> Copyright © 2013 paradise-box All Rights Reserved. </address> <p class="pagetop"><a href="#wrap">TOPへ</a> </p> </div> <!-- footer end --> </div> <!-- footerMenu end --> <?php } else if( $mode == 'confirm'){ ?> <!-- 確認画面 --> <div id="top"> <div id="header"> <a href="index.html"><img src="images/logo01.jpg" alt="" /></a> </div> <div id="globalnavi"> <ul> <li id="menu1"><a href="top.html"></a> </li> <li id="menu2"><a href="event01.html"></a> </li> <li id="menu3"><a href="contents01.html"></a> </li> <li id="menu4"><a href="contents02.html"></a> </li> <li id="menu5"><a href="point.html"></a> </li> <li id="menu6"><a href="bosyutop.html"></a> </li> </ul> </div> <div id="icatch" align="center"><img src="images/info_top.jpg" width="780" height="150" alt=""/> </div> <div id="contents"> <div id="main_form"> <section id="main_secion"> <h2 class="h">お問い合わせ</h2> <form action="contact_form.php" method="post" class="mainForm"> <table> 名前 <?php echo $_SESSION['fullname'] ?><br> Eメール <?php echo $_SESSION['email'] ?><br> お問い合わせ内容 <br> <?php echo nl2br($_SESSION['message']) ?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> </form> </table> </section> </div> <!-- main end --> <div id="sub"> <div class="section"> <p><a href="tenga.html"><img src="images/side_t2.jpg" width="220" height="330" alt="" / id="i3"></a> </p> <p> <a href="bosyutop.html#bosyu01"><img src="images/side004.JPG" alt="" / id="i3"></a> </p> </div> <!-- sub end --> </div> <!-- contents end --> </div> </div> <!-- top end --> <div id="footMenu"> <ul> <li><a href="top.html">トップページ</a> </li> <li><a href="event01.html">イベント情報</a> </li> <li><a href="contents01.html">仙台店</a> </li> <li><a href="contents02.html">利府店</a> </li> <li><a href="point.html">ポイントカード</a> </li> <li><a href="bosyutop.html">採用情報</a> </li> </ul> <div id="footer"> <address> Copyright © 2013 paradise-box All Rights Reserved. </address> <p class="pagetop"><a href="#wrap">TOPへ</a> </p> </div> <!-- footer end --> </div> <?php } else { ?> <!--完了画面--> 送信しまいた。お問い合わせありがとうございました。<br> <?php } ?>
試したこと
コードの確認。
セキュリティ対策の実装をしないとうまくいく
補足情報(FW/ツールのバージョンなど)
ユーチューブのお問い合わせの動画を見て作成。
オリジナルのソースコードをダウンロードし、サーバーにアップロードして試しても同じ現象が起きる。
あなたの回答
tips
プレビュー