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

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

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

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

Q&A

解決済

4回答

2366閲覧

エラーメッセージが表示されない(泣)

nana727

総合スコア51

PHP

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

0グッド

0クリップ

投稿2019/06/24 14:41

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージが表示されない エラーメッセージが表示された際、氏名のnameタグにSESSION['name']を保存するも 戻ったときに返ってこない

該当のソースコード

ソースコード
<?php session_start(); $array = ['上記が未入力です','@を追加してください',]; //空の値 $name_error =""; $login_error =""; $pass_error =""; $mail_error =""; //empty:$_POST['']空値が入っているかどうか確認 //isset()は存在するかどうかを確認 //各項目に値が入っている場合はtrueを返す if(!empty($_POST['name']) && !empty($_POST['login_id']) && !empty($_POST['pass']) && !empty($_POST['mail'])){ $_SESSION['name'] = $_POST['name']; $_SESSION['login_id'] = $_POST['login_id']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['mail'] = $_POST['mail']; $name = $_POST['name']; $login_id = $_POST['login_id']; $pass = $_POST['pass']; $mail = $_POST['mail']; if(empty($name)){ $name_error = $array[0]; } if(empty($login_id)){ $login_error = $array[0]; } if(empty($pass)){ $pass_error = $array[0]; } if(empty($mail)){ $mail_error = $array[0]; }elseif(empty($_POST['mail'])){ $mail_error = $array[1]; }else{ header('location:index1.php'); } } ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>会員登録</title> <link rel="stylesheet" href="../reset.css"> <link rel="stylesheet" href="style.css"> </head> <body> <form class="" action="" method="post"> <table>
<tr><th rowspan="2">氏名</th><td><input type="text" name="name" value="<?php $_SESSION['name']; ?> "></td></tr> <tr> <td><?php echo $name_error; ?></td> </tr> <tr><th rowspan="2">ログインID</th><td><input type="text" name="login_id" value=""></td></tr> <tr> <td><?php echo $login_error; ?></td> </tr> <tr><th rowspan="2">パスワード</th><td><input type="text" name="pass" value=""></td></tr> <tr> <td><?php echo $pass_error; ?></td> </tr> <tr><th rowspan="2">メール</th><td><input type="text" name="mail" value=""></td></tr> <tr> <td><?php echo $mail_error; ?></td> </tr> <?php //テキストアライン:center;?> <tr><td colspan="3"><input type="submit" name="" value="確認"></td></tr> </table> </form> </body>
</html>

試したこと

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2019/06/24 22:05

質問を編集して不要な部分を削りコードはマークダウンのcode機能を利用してください。
guest

回答4

0

ベストアンサー

仕様が分からないのでてきとうに手を入れました。

php

1<?php 2 3session_start(); 4 5$array = ['上記が未入力です','@を追加してください',]; 6 7//空の値 8$name = ''; 9$login_id = ''; 10$pass = ''; 11$mail = ''; 12$name_error =""; 13$login_error =""; 14$pass_error =""; 15$mail_error =""; 16 17//empty:$_POST['']空値が入っているかどうか確認 18//isset()は存在するかどうかを確認 19 20//各項目に値が入っている場合はtrueを返す 21if (isset($_POST['check'])) { 22 if (!empty($_POST['name']) { 23 $name = $_POST['name']; 24 } else { 25 $name_error = $array[0]; 26 } 27 if (!empty($_POST['login_id']) { 28 $login_id = $_POST['login_id']; 29 } else { 30 $login_error = $array[0]; 31 } 32 if (!empty($_POST['pass']) { 33 $pass = $_POST['pass']; 34 } else { 35 $pass_error = $array[0]; 36 } 37 if (!empty($_POST['mail'])) { 38 $mail = $_POST['mail']; 39 } else { 40 $mail_error = $array[0]; 41 } 42 if ($name_error=='' && $login_error=='' && $pass_error=='' && $mail_error=='') { 43 $_SESSION['name'] = $name; 44 $_SESSION['login_id'] = $login_id; 45 $_SESSION['pass'] = $pass; 46 $_SESSION['mail'] = $mail; 47 } 48} 49 50?> 51<!DOCTYPE html> 52<html lang="ja" dir="ltr"> 53<head> 54<meta charset="utf-8"> 55<title>会員登録</title> 56<link rel="stylesheet" href="../reset.css"> 57<link rel="stylesheet" href="style.css"> 58</head> 59<body> 60<form class="" action="" method="post"> 61<table> 62 63<tr><th rowspan="2">氏名</th><td><input type="text" name="name" value="<?php echo $name; ?>"></td></tr> 64<tr> 65<td><?php echo $name_error; ?></td> 66</tr> 67<tr><th rowspan="2">ログインID</th><td><input type="text" name="login_id" value="<?php echo $login_id; ?>"></td></tr> 68<tr> 69<td><?php echo $login_error; ?></td> 70</tr> 71<tr><th rowspan="2">パスワード</th><td><input type="text" name="pass" value="<?php echo $pass; ?>"></td></tr> 72<tr> 73<td><?php echo $pass_error; ?></td> 74</tr> 75<tr><th rowspan="2">メール</th><td><input type="text" name="mail" value="<?php echo $mail; ?>"></td></tr> 76<tr> 77<td><?php echo $mail_error; ?></td> 78</tr> 79 80<?php //テキストアライン:center;?> 81<tr><td colspan="3"><input type="submit" name="check" value="確認"></td></tr> 82 83</table> 84</form> 85</body> 86</html>

投稿2019/06/24 16:22

takasima20

総合スコア7460

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

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

nana727

2019/06/25 00:17

ご回答ありがとうございます。 解決しました。 ありがとうございます!
guest

0

イメージ説明
ご回答ありがとうございます。
打ち込んでみたんですが、駄目でした。
何が原因でしょうか?

一応、コードとしては、最初if文で値が入っていないので条件分岐させます
それからfromタグでaction選択なしで自分のところに戻ってきます。
papinianusさんのコードでは

if(!empty($_POST['name']) && !empty($_POST['login_id'])
&& !empty($_POST['pass']) && !empty($_POST['mail'])) {

$_SESSION['name'] = $_POST['name']; $_SESSION['login_id'] = $_POST['login_id']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['mail'] = $_POST['mail'];

}

ここで区切れていますので値が入っていないと出ました。

投稿2019/06/24 15:26

nana727

総合スコア51

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

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

0

php

1<?php 2 3session_start(); 4 5$array = ['上記が未入力です','@を追加してください',]; 6 7//空の値 8$name_error =""; 9$login_error =""; 10$pass_error =""; 11$mail_error =""; 12 13//empty:$_POST['']空値が入っているかどうか確認 14//isset()は存在するかどうかを確認 15 16//各項目に値が入っている場合はtrueを返す 17if(!empty($_POST['name']) && !empty($_POST['login_id']) 18 && !empty($_POST['pass']) && !empty($_POST['mail'])) { 19 20 $_SESSION['name'] = $_POST['name']; 21 $_SESSION['login_id'] = $_POST['login_id']; 22 $_SESSION['pass'] = $_POST['pass']; 23 $_SESSION['mail'] = $_POST['mail']; 24} 25 $name = $_POST['name']; 26 $login_id = $_POST['login_id']; 27 $pass = $_POST['pass']; 28 $mail = $_POST['mail']; 29 30 if(empty($name)){ 31 $name_error = $array[0]; 32 } 33 if(empty($login_id)){ 34 $login_error = $array[0]; 35 } 36 if(empty($pass)){ 37 $pass_error = $array[0]; 38 } 39 if(empty($mail)){ 40 $mail_error = $array[0]; 41 }elseif(empty($_POST['mail'])){ 42 $mail_error = $array[1]; 43 }else{ 44 header('location:index1.php'); 45 } 46 47//} 48 49?> 50<!DOCTYPE html> 51<html lang="ja" dir="ltr"> 52<head> 53 <meta charset="utf-8"> 54 <title>会員登録</title> 55 <link rel="stylesheet" href="../reset.css"> 56 <link rel="stylesheet" href="style.css"> 57</head> 58<body> 59<form class="" action="" method="post"> 60 <table> 61 62 <tr><th rowspan="2">氏名</th><td><input type="text" name="name" value="<?php $_SESSION['name']; ?> "></td></tr> 63 <tr> 64 <td><?php echo $name_error; ?></td> 65 </tr> 66 <tr><th rowspan="2">ログインID</th><td><input type="text" name="login_id" value=""></td></tr> 67 <tr> 68 <td><?php echo $login_error; ?></td> 69 </tr> 70 <tr><th rowspan="2">パスワード</th><td><input type="text" name="pass" value=""></td></tr> 71 <tr> 72 <td><?php echo $pass_error; ?></td> 73 </tr> 74 <tr><th rowspan="2">メール</th><td><input type="text" name="mail" value=""></td></tr> 75 <tr> 76 <td><?php echo $mail_error; ?></td> 77 </tr> 78 79 <?php //テキストアライン:center;?> 80 <tr><td colspan="3"><input type="submit" name="" value="確認"></td></tr> 81 82 </table> 83</form> 84</body> 85</html>

こういうことですかね

投稿2019/06/24 14:53

papinianus

総合スコア12705

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

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

nana727

2019/06/24 15:27

![イメージ説明](9f6ae6b0a20fe067430fde654a272a5b.png) ご回答ありがとうございます。 打ち込んでみたんですが、駄目でした。 何が原因でしょうか? 一応、コードとしては、最初if文で値が入っていないので条件分岐させます それからfromタグでaction選択なしで自分のところに戻ってきます。 papinianusさんのコードでは if(!empty($_POST['name']) && !empty($_POST['login_id']) && !empty($_POST['pass']) && !empty($_POST['mail'])) { $_SESSION['name'] = $_POST['name']; $_SESSION['login_id'] = $_POST['login_id']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['mail'] = $_POST['mail']; } ここで区切れていますので値が入っていないと出ました。
papinianus

2019/06/24 15:40

このページがほかから遷移してくるのでないなら、25行目以降でisset($_POST['name'])とかfilter_inputとかエラーにならないように手を打つしかないでしょう。 }をこの位置に持ってこずに質問のままであるとするなら、すべての入力項目がemptyでないというifの中でエラーチェックしていることになるので未入力の警告部分は到達できないコードです。
papinianus

2019/06/24 15:40

簡単に検証するには、そのエラーが出た状態で一度確認ボタンを押してください
guest

0

echoなどを使い$nameなどに何が入っているのか確認する事でデバッグを行うのが1つの手かと思います。
そちらの方を試してみて下さい。

エラーメッセージが表示されない
エラーメッセージが表示された際、氏名のnameタグにSESSION['name']を保存するも

こちらエラーメッセージが表示されているのかいないのか、少し分かりにくいです。
エラーが出るのであればどういったエラーメッセージが出るのか教えて頂けますでしょうか?

投稿2019/06/24 14:51

編集2019/06/24 15:04
marurunn

総合スコア702

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

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

marurunn

2019/06/24 14:58

そういえばPHPなのでelseif文がありましたね。 完全に失念しておりました、わざわざリファレンスまで貼って頂き感謝です。
papinianus

2019/06/24 15:07

保身ですが、マイナスしてないので。
marurunn

2019/06/24 15:14

特に気にされる事は無いかと思います。 私自身、高評価や低評価から学ぶ事は多いので有難い限りです。 それよりもpapinianusさんの回答を拝見でき勉強になりましたので、少々くどいかもしれませんが感謝しております。 参考にさせて頂きます、この度は有難うございました。
nana727

2019/06/24 15:16

ご回答ありがとうございます。 デバッグなどは試しましたが駄目でした。 ほんとに初心者ですいません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問