質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

492閲覧

バリデーションとクロスサイトスクリプティング(XSS)を実装後

kokt_kt_dare

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/11/02 02:35

前提・実現したいこと

お問い合わせフォームを作成中、エラーメッセージを表示させることなどのセキュリティ対策でバリデーションとクロスサイトスクリプティング(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>'; } ?>
<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 &copy; 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 &copy; 2013 paradise-box All Rights Reserved. </address> <p class="pagetop"><a href="#wrap">TOPへ</a> </p> </div> <!-- footer end --> </div> <?php } else { ?> <!--完了画面--> 送信しまいた。お問い合わせありがとうございました。<br> <?php } ?>
</body> </html>

試したこと

コードの確認。
セキュリティ対策の実装をしないとうまくいく

補足情報(FW/ツールのバージョンなど)

ユーチューブのお問い合わせの動画を見て作成。
オリジナルのソースコードをダウンロードし、サーバーにアップロードして試しても同じ現象が起きる。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/11/02 03:25

もう少しコンパクトに要点を絞って質問できないですか?
FKM

2021/11/02 04:26

error_reportingをoffにしてませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問