PHPでエラーを元の画面にかえす方法

このQ&Aのポイント
  • PHPを使用して、エラーメッセージを次の画面に遷移せずに、新規登録ボタンを押した場合に、エラー表示を入力している画面に表示する方法を教えてください。
  • また、javascriptを使用せずに実現する方法があれば、そのサンプルも教えてください。
  • 適切な入力がない場合に、エラー表示を入力フォームに表示して、ユーザに再度入力させたいです。
回答を見る
  • ベストアンサー

PHPでエラーを元の画面にかえすには

エラーメッセージを次の画面に行かずに 新規登録ボタンを押したら エラー表示を入力している画面に 表示するにはどうしたら出来ますか? javascriptは触れたことがないので使いたくないです ありましたら簡単なサンプルも教えて下さい 下記は入力フォームです <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 空白だったら入力フォームにエラー表示し再度ユーザに入力させたい

noname#197690
noname#197690
  • PHP
  • 回答数4
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.4

>重複チェックしているのなんでエラーが出るのでしょうかね? スクリプト側で重複チェックしていませんからね。必要ならinsert前にselectしてチェックしてください。 >氏名と住所が空白でも登録できてしまいます おっと、失礼。登録前のエラーチェックが抜けましたね(汗 <?php if ($_POST) { ____$errmsg = array(); ____$id = isset($_POST['ID']) ? trim($_POST['ID']) : ''; ____$name = isset($_POST['NAME']) ? trim($_POST['NAME']) : ''; ____$addr = isset($_POST['ADDR']) ? trim($_POST['ADDR']) : ''; ____if (!ctype_digit($id)) { $errmsg[] = '番号を入力してください'; } ____if ($name === '') { $errmsg[] = '名前を入力してください'; } ____if ($addr === '') { $errmsg[] = '住所を入力してください'; } ____if (count($errmsg) === 0) { ________try { ____________$pdo = new PDO('mysql:host=localhost;dbname=db_test;charset=utf8', 'root', ''); ____________$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ____________$stmt = $pdo->prepare("INSERT INTO tbl_test VALUES(?, ?, ?)"); ____________$stmt->execute(array($id, $name, $addr)); ____________if($stmt->rowCount() > 0) { ________________header('Location: http://localhost/top.php'); ____________} else { ________________$errmsg[] = '登録出来ません'; ____________} ________} catch (PDOException $e) { ____________$errmsg[] = 'DB Error:' . $e->getMessage(); ________} ____} } header('Content-type: text/html; charset="utf-8"'); ?> <html> <head><title>新規登録</title></head> <body> <div style="margin:30px"> <form action="" method="POST"> <h2>登録画面</h2> すべての項目入力してください<br> 番号<input type="number" name="ID" value="<?= isset($id) ? $id : ''; ?>">(一覧画面にない番号を入力してください) <br> 氏名<input type="text" size="50" name="NAME" value="<?= isset($name) ? $name : ''; ?>"><br> 住所<input type="text" size="130" name="ADDR" value="<?= isset($addr) ? $addr : ''; ?>"><br> <input type="submit" value="登録する"> <a href="http://localhost/top.php"><button type="button">一覧に戻る</button></a> </form> <?php if (isset($errmsg)&&(count($errmsg) > 0)) { print '<div style="color:red">' . implode('<div>', $errmsg) . '</div>'; } ?> </div> </body> </html> #issetをemptyにしてもダメでしょww

noname#197690
質問者

お礼

ありがとうございます 無事やりたい操作ができました

その他の回答 (3)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

サンプル(行頭のタブをアンダースコア4つに置換しています) <?php if ($_POST) { ____$errmsg = array(); ____$id = isset($_POST['ID']) ? trim($_POST['ID']) : ''; ____$name = isset($_POST['NAME']) ? trim($_POST['NAME']) : ''; ____$addr = isset($_POST['ADDR']) ? trim($_POST['ADDR']) : ''; ____if (!ctype_digit($id)) { $errmsg[] = '番号を入力してください'; } ____if ($name === '') { $errmsg[] = '名前を入力してください'; } ____if ($addr === '') { $errmsg[] = '住所を入力してください'; } ____try { ________$pdo = new PDO('mysql:host=localhost;dbname=db_test;charset=utf8', 'root', ''); ________$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); ________$stmt = $pdo->prepare("INSERT INTO tbl_test VALUES(?, ?, ?)"); ________$stmt->execute(array($id, $name, $addr)); ________if($stmt->rowCount() > 0) { ____________header('Location: http://localhost/top.php'); ________} else { ____________$errmsg[] = '登録出来ません'; ________} ____} catch (PDOException $e) { ________$errmsg[] = 'DB Error:' . $e->getMessage(); ____} } header('Content-type: text/html; charset="utf-8"'); ?> <html> <head><title>新規登録</title></head> <body> <div style="margin:30px"> <form action="" method="POST"> <h2>登録画面</h2> すべての項目入力してください<br> 番号<input type="number" name="ID" value="<?= isset($id) ? $id : ''; ?>">(一覧画面にない番号を入力してください) <br> 氏名<input type="text" size="50" name="NAME" value="<?= isset($name) ? $name : ''; ?>"><br> 住所<input type="text" size="130" name="ADDR" value="<?= isset($addr) ? $addr : ''; ?>"><br> <input type="submit" value="登録する"> <a href="http://localhost/top.php"><button type="button">一覧に戻る</button></a> </form> <?php if (isset($errmsg)&&(count($errmsg) > 0)) { print '<div style="color:red">' . implode('<div>', $errmsg) . '</div>'; } ?> </div> </body> </html>

noname#197690
質問者

お礼

ありがとうございます。 参考にいたします DB Error:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' と主キーが被ってますって意味ですよね? 重複チェックしているのなんでエラーが出るのでしょうかね?

noname#197690
質問者

補足

また番号がかぶってなかったら氏名と住所が空白でも登録できてしまいます issetをemptyに変更すればできますかね

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>下記がインセプトphpなのですが インセプトとは何でしょうか? >一緒にするということですか そうです(ANo.1がそう読み取れなかったらすみません)。

noname#197690
質問者

お礼

すいません!insert.phpでフォームの送り先です。 勉強不足ですいません。 どう一緒にわからなくって 少し自分のプログラムでサンプル書いていただけないですか?

noname#197690
質問者

補足

また番号がかぶってなかったら氏名と住所が空白でも登録できてしまいますといいましたがやっぱり空白だったらできないです DB Error:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'PRIMARY' が出ます 出ない方法ありますか?

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

一番手っ取り早いのは ><form action = "insert.php" method = "POST"> actionを自分自身にすること。 で、スクリプトの動作自体をPOSTの有無で分ける <?php if ($_POST) { // POSTされたデータの処理 // エラーがあったら、$errmsgに格納 if (!isset($errmsg)) { // エラーがなかったら ?> 処理したあとで表示するhtmlソース <?php exit; } // end of isset($errmsg) } // end of POST 入力フォームのhtmlソース(1) <?php // 適当な位置にメッセージ表示を挟む if (isset($errmsg)) { print '<div style="color:red">' . $errmsg . '</div>'; } ?> 入力フォームのhtmlソース(2)

noname#197690
質問者

お礼

返信ありがとうございます 下記がインセプトphpなのですが一緒にするということですか <?php $err = ""; if(empty($_POST['ID'])) $err.= "<br><br>番号入力してください。<br><br>"; if(empty($_POST['NAME'])) $err.= "<br><br>氏名入力してください。<br><br>"; if(empty($_POST['ADDR'])) $err.= "<br><br>住所を入力してください。<br><br>"; if(empty($err)) { $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("INSERT INTO tbl_test VALUES(?,?,?)"); $st->execute(array($_POST['ID'], $_POST['NAME'],$_POST['ADDR'])); if($st->rowCount()>0) { header('Location: http://localhost/top.php'); }else{ print "既に登録している番号です"; } } echo $err; ?>

関連するQ&A

  • php データ新規追加

    入力フォームに入力された番号が登録されてなかったら新規登録できるようにしたい INSEPT IGNORE INTOで主キーを無視するのではなく重複したらエラーメッセージを出しユーザにもう一度入力させるようにする 新規登録フォーム <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <a href="http://localhost/top.php"> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"></A> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 登録を実行するフォーム <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '') { $id = mysqli_real_escape_string($con, $_POST['ID']); $name = mysqli_real_escape_string($con, $_POST['NAME']); $addr = mysqli_real_escape_string($con, $_POST['ADDR']); $sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } header('Location: http://localhost/top.php'); exit(); } else { ?> <html> <body> <blockquote> <br><br>データが未入力の箇所があります。すべてデータを入力してください <br><br><br> <a href="http://localhost/regist.php"> <INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; width: 140px; height: 40px"></A> <br><br><br> <A HREF="http://localhost/top.php"> <INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; width: 140px; height: 40px"></A> </blockquote> </body> </html> <?php } mysqli_close($con); ?> どういう風にselect文を書けばいですか?

    • ベストアンサー
    • MySQL
  • php パラメータ

    新規登録として登録できたら別ウインドウに遷移せずそのままtopに戻し戻ってきたらデータが登録されているようにしたいですがなかなか出来ません 調べたら、exec関数を使えばできるとのことですが $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); こんな例がありましたが自分の力ではこのプログラムのどこを修正すればtop.phpに返ってくるかわかりません 下記は新規登録を行うための入力フォームです 登録するボタンを押したらそのままtopに移動したいのですがいまはinsert.phpに飛んでしまいます regist.php <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <a href="http://localhost/top.php"> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"></A> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 下記はinsert.phpです <!--insert.php 登録完了--> <html> <body> <blockquote> <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } if ($_POST['ID'] != '' && $_POST['NAME'] != '' && $_POST['ADDR'] != '') { $id = mysqli_real_escape_string($con, $_POST['ID']); $name = mysqli_real_escape_string($con, $_POST['NAME']); $addr = mysqli_real_escape_string($con, $_POST['ADDR']); $sql="INSERT INTO tbl_test (番号, 氏名, 住所) VALUES ('$id','$name','$addr')"; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "登録完了しました"; } else { echo "<br><br>データが未入力の箇所があります。すべてデータを入力してください"; } mysqli_close($con); $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); ?> <br><br><br> <a href="http://localhost/regist.php"> <INPUT TYPE = "button" VALUE = "登録画面に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> <br><br><br> <A HREF="http://localhost/top.php"> <INPUT TYPE = "button" VALUE = "一覧に戻る" style ="font-size:20px; WIDTH: 140px; HEIGHT: 40px"></A> </blockquote> </body> </html> どこを直せばいいですか? 本格的に直さないとできないですか?

    • ベストアンサー
    • PHP
  • なぜエラーが出るのか分からない(PHP)

    ●質問の主旨 check.phpファイルの最終行(</html>のところ)で Parse error: syntax error, unexpected end of file としてエラーが表示されます。 なぜエラー表示されるのでしょうか?ご存知の方ご教示願います。 (eclipseでもエラー表示されているのは分かりますが、 何がエラーなのか分かりません) ●状況 1.index.htmlのフォームに入力し、送信ボタンを押す (添付画像) 2.check.phpに飛ばす 3.飛ばすとエラーが表示される ●環境 windows8 xammp1.8.1 ●コード (index.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="check.php"> ニックネームを入力してください<br/> <input name="nickname" type="text" style="width:100px"><br/> メールアドレスを入力してください<br/> <input name="email" type="text" style="width:200px"><br/> ご意見を入力してください<br/> <input name="goiken" type="text" style="width:300px"><br/> <br/> <input type="submit" value="送信"> </form> </body> </html> (check.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname = $_POST['nickname']; $email = $_POST['email']; $goiken = $_POST['goiken']; if($nickname =='') { print'ニックネームが入力されてません'; } else { print'ようこそ!'; print $nickname; print'様'; print'<br/>'; } if($email =='') { print'emailが入力されてません'; } else { print'ようこそ!'; print $email; print'<br/>'; if($goiken =='') { print'ご意見が入力されてません'; } else { print'ご意見'; print $goiken; print'』<br/>'; } ?> </body> </html>

    • ベストアンサー
    • PHP
  • phpでmysqlに接続してデータを登録

    入力フォームをhtmlに作って それをidとpassを入力して それをmysqlに登録したいのですが うまくできません <html> <head> <meta http-equiv="Content-Type"content="text/html;charset="utf-8"/> <title>登録</title> </head> <body> <form action="touroku.php"method="post"> 登録id :<br /> <input type="text"name="id"size="10"value="" /><br /> パス:<br /> <input type="text"name="pass"size="10"value="" /><br /> <br /> <input type="submit"value="登録する" /> </form> </body> </html> という感じに 入力フォームは作ったのですが それからそれをmysqlにどうやって登録をするのかわかりません 詳しく解説されてわかりやすいサイトなどを教えてください もしくは教えてください

  • JavaScriptでメールフォーム

    サイトでメールフォームをCGIを使わずに、JavaScriptで作成した時の話なのですが、 例えば、 <form name="mail" action="mailto:aaa@bbb.com" method="post" enctype="text/plain"> 名前<br> <input name="name"><br> 送信内容<br> <textarea style="WIDTH: 164px; HEIGHT: 50px" name="body"></textarea><br> <input style="WIDTH: 74px; HEIGHT: 21px" type="submit" size="37" value="送信"></form> ↑のような一般型のフォームは出来るのですが、 メールの送信先をメール送信者に指定させてそのアドレスにメールを送信するようにするにはどうしたら良いのでしょうか? すみませんが御願いします・・・

  • PHPについて教えてください

    以下のコードでthanks.phpにemailとgoikenが表示されません なぜでしょうか? おそらくthanks.phpが間違えてると思いますが見直してもわかりません index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <form method="POST" action="check.php"> ニックネームを入力してください<br> <input name="nickname" type="text" style="width:100px"><br> メールアドレスを入力してください<br> <input name="email" type="text" style="width:200px"><br> ご意見を一言でお聞かせください<br> <input name="goiken" type="text" style="width:300px"><br> <input type="submit" value="送信"> </form> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if ($nickname==''){ print'ニックネームが入力されていません<br>'; } else { print'ようこそ'; print $nickname; print' 様'; print'<br>'; } if ($email==''){ print'メールアドレスが入力されていません<br>'; } else { print'メールアドレス:'; print $email; print'<br>'; } if ($goiken==''){ print'ご意見が入力されていません<br>'; } else { print'ご意見『'; print $goiken; print'』<br>'; } if($nickname=='' || $email='' || $goiken=''){ print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">'; print'<input name="nickname" type="hidden" value="'.$nickname.'">'; print'<input name="email" type="hidden" value="'.$email.'">'; print'<input name="goiken" type="hidden" value="'.$goiken.'">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK">'; print'</form>'; } ?> </body> </html> thanks.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print $nickname; print'様<br>'; print'ご意見ありがとうございました<br>'; print'頂いたご意見『'; print $goiken; print '』<br>'; print $email; print'宛にメールを送信しました'; ?> </body> </html>

    • ベストアンサー
    • PHP
  • 確認画面・完了画面・エラー画面が出るメールフォーム

    こんばんは。PHPを習いはじめて1ヶ月ぐらいしか勉強をしていない素人です。 今度仕事でメールフォームを作ることになり、入力画面に入れた情報をメールで受け取るところまではできるのですが、入力画面→確認画面→エラー画面→完了画面のように作りたいのですが、参考書やネットで調べてもいい解説がありませんでした。 下記のソースからこの先どういう作れば希望フォームになるのでしょうか?みなさんの力を貸してください。お願いします。 ★フォーム(HTMLソース) <html> <head> </head> <body> <form method="POST" action="post.php"> 名前<br> <input type="text" name="name" size="15"><br> 好きな果物<br> <input type="radio" name="food[]" value="orange">オレンジ <input type="radio" name="food[]" value="apple">りんご <input type="radio" name="food[]" value="strawberry">いちご<br> <input type="submit" value="送信"> </form> </body> </html> ★PHP(スクリプト) <?php $to='××××@○○○.jp'; $subject='テストメール'; $body="名前:".$_POST["name"]."\n"."好きな果物:".$_POST["food"][0]; if(mb_send_mail($to,$subject,$body)){ print('メール送信に成功しました。'); } else{ print('メール送信に失敗しました。'); } ?>

    • 締切済み
    • PHP
  • 入力判定についての質問

    フォームから送信ボタンをクリックしたときにテキストが空なら送信画面に表示されませんと表示するプログラムを考えているのですがうまくいきません(行き詰まりました)どなたかヒントになるコードなど教えてほしいです <input type = "button" name="bot"style="WIDTH: 100px; HEIGHT: 30px" VALUE ="ID"><input type="text"name="example" style="WIDTH: 100px; HEIGHT: 30px"value=><br><p> <input type = "button" name="bot"style="WIDTH: 100px; HEIGHT: 30px" VALUE ="パス"><input type="text" name="sample"style="WIDTH: 100px; HEIGHT: 30px" value=><br><p> <%String strAns = request.getParameter("example"); String MyAction = request.getParameter("MySubmit"); %> <% if (MyAction=="Toroku"||strAns==("")){ out.println("未入力です"); } %> <form method="post" action=""> <input type="submit"name="text"style="WIDTH: 100px; HEIGHT: 30px" value="送信"onClick="func('Toroku');" > <input type="reset" style="position:relative;left:100px;WIDTH: 100px; HEIGHT: 30px"value="リセット"> </form> <script language="JavaScript"> function func(MyCommand){ document.MyForm.MySubmit.value=MyCommand; document.MyForm.submit(); } </script>

    • ベストアンサー
    • Java
  • PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問

    PHP+HTMLの確認画面から入力画面に戻る際のデータ保持について質問致します。 1.入力→2.確認→3.実行の3ページを作成しましたが、 2.確認で入力した値が間違っていた場合、1.入力に戻って訂正する仕様です 私は2.確認の戻るボタンにjavaのhistory.back();を使ったのですが ブラウザやOSにより、戻った際にデータが保持されていない場合があるとの事だったので 他の方法がないかご教授下さい。サンプルコードを書いて頂くと助かります。 以下、作成したコード 1.入力画面(mail.html) <html> <body> <form action="chk.php" method="post"> 件名:<br> <input type="text" name="subject" size="30" value=""><br> 送信者名:<br> <input type="text" name="name" size="30" value=""><br> メールアドレス:<br> <input type="text" name="mail" size="30" value=""><br> 本文:<br> <textarea name="message" cols="30" rows="5"></textarea><br> <br> <input type="submit" value="確認する">&nbsp&nbsp<input type="reset" value="クリア"> </form> </body> </html> 2.確認画面(chk.php) <?php $name = $_POST["name"]; $message = $_POST["message"]; $subject = $_POST["subject"]; $mail = $_POST["mail"]; ?> <html> <body> <form action="send.php" method="post"> 件名:<?php echo $subject; ?><br> 送信者名:<?php echo $name; ?><br> メールアドレス:<?php echo $mail; ?><br> 本文:<?php echo $message; ?><br> <input type="submit" value="これでOK"> &nbsp&nbsp //下記の戻るボタンで戻るとデータ保持をするようにしたい。history.back以外で。 <input type="button" value="戻る" onclick="history.back();"> <input type="hidden" name="name" value="<?php echo $name; ?>"> <input type="hidden" name="message" value="<?php echo $message; ?>"> <input type="hidden" name="subject" value="<?php echo $subject; ?>"> <input type="hidden" name="mail" value="<?php echo $mail; ?>"> </form> </body> </html> 3.送信画面(send.php) <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"]; if (!mb_send_mail("hoge@example.com", $_POST["subject"], $message, "From: " . $_POST["mail"])) { exit("メールの送信に失敗しました。"); } ?> <html> <body> <p>メールが送信されました。</p> </body> </html> 初心者ですので、わかりやすい表記をお願い致します。

    • 締切済み
    • PHP
  • php $_SESSIONでデータが残らない。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? 今度はCSSなども書きます。 どうぞよろしくお願い致します。 記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="content-type" content="text/html" charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ブログ</title> <meta name="description" content="このWebサイトは、初めてHTMLで作るブログページです。"> <link rel="stylesheet" href="./css/style.css"> <style> body{ width: 100%; max-width: 800px; margin-top: auto; margin-left: auto; margin-right: auto; background-color: rgb(71, 133, 157); padding: 10px; text-align: center; } div{ background-color: rgb(247, 248, 245); padding: 2em; } script{ margin-top: 12em; } p { margin-left: 2em; text-align: left; font-size: 25px; font-weight: bold; color: rgb(10, 10, 10); } form { font-size: 25px; font-weight: bold; color: blue; } input { font-size: 25px; margin:auto; } </style> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう