• ベストアンサー

セッション変数に対するエラー表示

こんにちは。いつもお世話になっています shingetsuです。 PHPをただいま勉強中で、わからないことがあったので質問させていただきます。よろしくお願いします。 現在自分でサイトを作っているのですが、ユーザー登録フォームに空欄があった場合空欄があります、というようなエラーを表示させたいのですが、その表示方法がよくわかりません。 <?php //入力されたデータを読み取る $_SESSION['name'] = $_POST['name']; $_SESSION['passwd'] = $_POST['passwd']; $_SESSION['address'] = $_POST['address']; $_SESSION['tel'] = $_POST['tel']; $_SESSION['email'] = $_POST['email']; このように読み取ってから、ここでif文を使ってエラーを表示させればいいのでしょうか?それとももっと簡単な方法がありますでしょうか?PHPの本を読んでみましたが載ってなく、ネット検索してみようにも検索方法がよくわからないのでヒントやアドバイスをよろしければ教えてください。お願いします

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

  • ベストアンサー
  • cybert
  • ベストアンサー率56% (18/32)
回答No.2

amountainblastさんの改造版です。 >後は何回も同じような分を書くのがめんどくさければこれをfroeachで処理をすれば~ isset()を使わなくても、 if(!$_POST['name']){ //エラー処理 } でNULLか否かを判定できます。 また項目別にエラー表示を出さなくても良いのなら if(!$_POST['name'] AND !$_POST['passwd'] AND !$_POST['address'] AND 。。。){} これでも良いかも。長くなりますね。。。

shingetsu
質問者

補足

ご回答ありがとうございます! このような方法もあるのですね、勉強になります。 現在はこのエラーを表示するページをつくり、そこへのリンクがうまくいかないので四苦八苦しておりますが、空欄か否かの判定はできたと思います。ありがとうございます。

その他の回答 (4)

回答No.5

こんにちは。 PHPページにフォームからのリンクがちゃんと出来ていないと言う事でしょうか? 登録フォームが指定されているとのことですので、HTMLを直接さわれるのかわかりませんが、もしさわれるのでしたら、フォームのページのところに <form name="XXX" method="post" action="XXX"> みたいな感じになっているところがないですか? あれば、ここのaction="XXX"のXXXのところに リンク先のURLを指定してください。

shingetsu
質問者

お礼

ええと、送ったデータがきちんと送れないのか、リンクがおかしかったのかわからない状態だったので追加で質問した次第です。無事改善したのでよかったです。回答ありがとうございました!

  • cybert
  • ベストアンサー率56% (18/32)
回答No.4

No.3の回答者のcybertです。 回答に誤りがありました。 index.htmlをエラーページにと書き込んでおきながら コードに書いてなかったですね。間違えました。 正しくは以下のようになります。 header("Location: http://hoge.com/index.html"); exit;

shingetsu
質問者

お礼

なるほど。ありがとうございます。 みなさんに教えていただいた内容をいろいろ試してみて、利用したいと思います。 ありがとうございました。

  • cybert
  • ベストアンサー率56% (18/32)
回答No.3

ついでにー >現在はこのエラーを表示するページをつくり、そこへのリンクがうまくいかないので四苦八苦~ header("Location: http://hoge.hoge"); exit; でうまくいきませんか?index.html部分をエラーページに書き換えて。 ※ジャンプ先は絶対パスで。 ※ヘッダーを出力するので、headerの前に何も出力してはいけません。 悪い例(headerの前に<html>が出力されてる。) <html> <?PHP header("Location: http://hoge.hoge"); exit;

shingetsu
質問者

補足

2度も回答ありがとうございます。 説明しただいたのですが、いまいち理解できないです; >>index.html部分をエラーページに書き換えて とありますが、index.htmlとはどの部分を指しているのでしょうか? 私の場合、index.htmlはユーザ登録ページと商品ページへのリンクがあるTOPページなのですが・・その部分をエラーページにすることになってしまうので、よろしければその部分を教えていただけないでしょうか。

回答No.1

POSTでデータを取得するときにデータがあるか無いかで処理をしたらいいかと思います。 nameですと if(!isset($_POST['name'])){ $_SESSION['name'] = $_POST['name']; } else { print("必須項目に空欄があります"); } (試していないので、スペル等にミスがあるかもしれません。) みたいな感じですかね。 isset関数は変数に値が格納されているかどうかでTRUEかFOLSE(?)を返すのでこんな場合には結構便利だと思います。 後は何回も同じような分を書くのがめんどくさければこれをfroeachで処理をすればOK牧場ですかね!! お粗末ながら・・・

shingetsu
質問者

補足

お早い回答ありがとうございます! さらにお聞きしたいのですが、あまりにも初歩的なことかもしれませんが、よろしければ教えていただきたいです。 HTMLでユーザー登録フォームを書いているのですがこの登録フォームは指定されたものを変えて利用しています。 <TD><INPUT TYPE="submit" VALUE="送信"><INPUT TYPE="reset" VALUE="クリア"></TD> ここからif(!isset($_POST['name'])){ $_SESSION['name'] = $_POST['name']; } else { print("必須項目に空欄があります"); } を表示させるために新しいPHPページを作ったのですがそのページへのリンクがうまくいかず、表示されませんでした。リンクさせるにはどの部分に書き込めばよろしいのでしょうか?