★入力チェック機能を完成させる

私たちはカジノサイトを独自にレビューしています。当社のリンクを通じてサインアップすると、追加料金なしで当社に手数料が発生する場合があります。

前のページへ戻った場合の処理を作成する

広告



前回は、未入力の項目があった場合に[前のページへ戻る]ボタンを表示して、ユーザーに再入力を促す仕組みを作成しました。

今回は、[前のページへ戻る]ボタンで確認ページconfir.phpから、入力ページindex.phpに戻ってきた場合のindex.php側の処理を作成します。

テキストエディタでindex.phpを開いて下記の内容を追加してください。

サンプルソース:index.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>お問合せ内容の入力|メール送信フォーム</title> </head> <body> <?php /******************************* 確認ページから戻ってきた場合のデータの受け取り *******************************/ if (isset($_POST["backbtn"])) { //確認ページ(confirm.php)から戻ってきた場合にはデータを受け取る $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); } else { //確認ページから戻ってきた場合でなければ、変数の値は必ず空となる $namae = ''; //お名前 $mailaddress = ''; //メールアドレス $naiyou = ''; //お問合せ内容 } ?> <form method="post" action="confirm.php"> <p><label>お名前:<br> <input type="text" maxlength="255" name="namae" value="<?=$namae?>"> </label></p> <p><label>メールアドレス:<br> <input type="email" size="30" maxlength="255" name="mailaddress" value="<?=$mailaddress?>"> </label></p> <p><label>お問合せ内容:<br> <textarea name="naiyou" cols="40" rows="5"><?=$naiyou?></textarea> </label></p> <p><input type="submit" value="入力内容を確認する"></p> </form> </body> </html>

入力が完了したら、index.phpを上書き保存してください。

ブラウザで表示確認してみよう

いま上書き保存したindex.phpをブラウザで表示確認してみましょう。

フォーム入力欄の一部が未入力だった場合に、
エラーメッセージの下に[前のページへ戻る]ボタンが表示されます。

そして、[前のページへ戻る]ボタンを押して前の入力画面へ戻った場合、
入力していた項目のデータが入力欄に記入された状態になっていれば成功です。

記述したソース内容を確認しよう

確認ページから戻ってきた場合のデータを受け取る

確認ページ(confirm.php)で未入力エラーが出て、
もう一度フォーム入力ページ(index.php)へ戻ってきた場合の処理について、ソースを見ながら確認していきましょう。

まず、確認ページ(confirm.php)の下記ソース部分に注目してください。

サンプルソース:confirm.phpの抜粋
//[前のページへ戻る]ボタンを表示する echo '<form method="post" action="index.php">'; echo '<input type="hidden" name="namae" value="'.$namae.'">'; echo '<input type="hidden" name="mailaddress" value="'.$mailaddress.'">'; echo '<input type="hidden" name="naiyou" value="'.$naiyou.'">'; echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; echo '</form>';

[前のページへ戻る]ボタンは上記ソースでいうと
<input type=”submit” name=”backbtn” value=”前のページへ戻る”>
の部分です。
このボタンには、name属性に「backbtn」というデータ名を、value属性に「前のページへ戻る」というデータ内容を指定しています。
これは、変数$backbtnに「前のページへ戻る」という値を格納しているということです。

次に、フォーム入力ページ(index.php)の下記ソース部分に注目してください。

サンプルソース:index.phpの抜粋
/******************************* 確認ページから戻ってきた場合のデータの受け取り *******************************/ if (isset($_POST["backbtn"])) { //確認ページ(confirm.php)から戻ってきた場合にはデータを受け取る $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); } else { //確認ページから戻ってきた場合でなければ、変数の値は必ず空となる $namae = ''; //お名前 $mailaddress = ''; //メールアドレス $naiyou = ''; //お問合せ内容 }

上記ソースは、[前のページへ戻る]ボタンを押したかどうかを判定して処理を振り分けています。

[前のページへ戻る]ボタンを押したかどうかは、
isset($_POST[“backbtn”])の部分、
つまり、$_POST[“backbtn”]に何か値がセットされているかどうかで判定しています。
[前のページへ戻る]ボタンを押せば、変数$backbtnには「前のページへ戻る」という値が格納されているはずなので、
それを根拠に[前のページへ戻る]ボタンが押されたと判定します。

この部分の処理をまとめると、
[前のページへ戻る]ボタンが押された場合には送られてきたデータを$namae・$mailaddress・$naiyouに代入して、
それ以外の場合には$namae・$mailaddress・$naiyouの値を空にするという流れになっています。

受け取ったデータをあらかじめ入力状態にする

フォーム入力ページ(index.php)の入力欄部分のソースを見てみましょう。

サンプルソース:index.phpの抜粋
<form method="post" action="confirm.php"> <p><label>お名前:<br> <input type="text" maxlength="255" name="namae" value="<?=$namae?>"> </label></p> <p><label>メールアドレス:<br> <input type="email" size="30" maxlength="255" name="mailaddress" value="<?=$mailaddress?>"> </label></p> <p><label>お問合せ内容:<br> <textarea name="naiyou" cols="40" rows="5"><?=$naiyou?></textarea> </label></p> <p><input type="submit" value="入力内容を確認する"></p> </form>

フォーム入力ページ(index.php)の入力欄には、
上記のようにinput要素のvalue属性の値や、textarea要素の要素内容として
<?=$namae?>
などのPHPソースを指定しています。
HTMLソース中に<? ~ ?>で部分的にPHPプログラムを埋め込んでいるのですが、
PHPプログラムが処理されると吐き出された結果がHTMLソースの一部になります。

PHPソースの内側の =$namae の部分は、「変数$namaeの内容を出力しなさい」という意味です。
[前のページへ戻る]ボタンで戻ってきた場合には、変数で受け取った内容が出力されてフォーム入力欄が入力済みの状態となります。
それ以外の場合には空文字が出力されるのでフォーム入力欄は空欄となり、ユーザーの新規入力を待つ状態になります。

エラーメッセージ

プログラムを作成する際、エラーは必ず出るものです。
PHPでプログラムを作成していると、開発途中でブラウザ画面にエラーメッセージが表示されることはよくあります。
一度もエラーを出さずに開発を終えることはまずありません。

もし、エラーメッセージが表示されたら、そのメッセージの内容などからエラーの原因を想定して該当箇所のソースを確認します。
例えば、下記の画面のエラーメッセージなら、エラーの原因となっている行番号が示されているのでその部分のPHPソースを確認します。

すると、下記のように12行目の末尾でセミコロン( ; )を記述し忘れていることが分かります。

セミコロンを記述し忘れたのは12行目なのに、「13行目に不具合がある」というエラーメッセージが出ることを不思議に思う方がいるかもしれません。
PHPではプログラムの一番最後のセミコロンは省略できるので、12行目の末尾にセミコロンが無いこと自体はエラーではありません。
12行目末尾のセミコロンが無いまま、13行目のプログラムを記述したことでエラーとなりました。
だから、12行目ではなく13行目に不具合があるというエラーメッセージが表示されたのです。

エラーにも様々な種類がありますが、セミコロンひとつ記述し忘れただけでもエラーは出ます。
他にも、打ち間違い・全角半角・大文字小文字・全角スペース・セミコロンが無いなどの記述ミスをすると、
ブラウザの画面上にエラーメッセージが表示されてプログラム全体が止まります。

エラーメッセージが表示されると初めは焦ってしまうものですが、必要以上にエラーを恐れることはありません。
誤ってデータベースを削除してしまうような致命的なミスでなければ、
原因を特定して修正すれば必ず正常に動作するようになります。

<前へ 目次へ 次へ>

広告



山田 太郎
テック・リード
山田太郎は、ウェブ開発やグラフィックスプログラミングに10年以上の経験を持つテクノロジーの専門家です。特にHTML5 CanvasやJavaScript、インタラクティブメディアに精通しており、動的なユーザーインターフェースや最先端のウェブアプリケーションの開発に携わってきました。複雑な図形描画や画像操作、リアルタイムグラフィックスに関する知識が豊富で、ウェブ技術の限界を追求する開発者たちにとって頼りになる存在です。知識の共有に情熱を持ち、初心者からプロフェッショナルまで幅広く支援するため、技術フォーラムやブログにも積極的に貢献しています。

ギャンブルガイド もっと見る

カジノファインダー

どのカジノが自分に最適か分からないですか?

サインアップは必要なく、1 分以内に最適なブックメーカーを簡単に見つけることができます。
カジノを探す
Back
質問
Select one of the following options
{"is_any_tile":true}

どのカジノが自分に最適か分からないですか?

Back
Restart
やったー!
これはあなたの選択に基づいた最高のカジノです...
51 users signed up
もっと表示する