プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。いつもお世話になっています
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の本を読んでみましたが載ってなく、ネット検索してみようにも検索方法がよくわからないのでヒントやアドバイスをよろしければ教えてください。お願いします

A 回答 (5件)

amountainblastさんの改造版です。


>後は何回も同じような分を書くのがめんどくさければこれをfroeachで処理をすれば~

isset()を使わなくても、
if(!$_POST['name']){
//エラー処理
}
でNULLか否かを判定できます。
また項目別にエラー表示を出さなくても良いのなら
if(!$_POST['name']
AND !$_POST['passwd']
AND !$_POST['address']
AND 。。。){}
これでも良いかも。長くなりますね。。。

この回答への補足

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

補足日時:2005/07/12 18:28
    • good
    • 0

こんにちは。


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

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

お礼日時:2005/07/14 17:59

No.3の回答者のcybertです。



回答に誤りがありました。
index.htmlをエラーページにと書き込んでおきながら
コードに書いてなかったですね。間違えました。
正しくは以下のようになります。

header("Location: http://hoge.com/index.html");
exit;
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/07/14 17:57

ついでにー



>現在はこのエラーを表示するページをつくり、そこへのリンクがうまくいかないので四苦八苦~

header("Location: http://hoge.hoge");
exit;

でうまくいきませんか?index.html部分をエラーページに書き換えて。
※ジャンプ先は絶対パスで。
※ヘッダーを出力するので、headerの前に何も出力してはいけません。

悪い例(headerの前に<html>が出力されてる。)
<html>
<?PHP
header("Location: http://hoge.hoge");
exit;

この回答への補足

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

補足日時:2005/07/13 13:41
    • good
    • 0

POSTでデータを取得するときにデータがあるか無いかで処理をしたらいいかと思います。


nameですと

if(!isset($_POST['name'])){
$_SESSION['name'] = $_POST['name'];
} else {
print("必須項目に空欄があります");
}
(試していないので、スペル等にミスがあるかもしれません。)

みたいな感じですかね。
isset関数は変数に値が格納されているかどうかでTRUEかFOLSE(?)を返すのでこんな場合には結構便利だと思います。
後は何回も同じような分を書くのがめんどくさければこれをfroeachで処理をすればOK牧場ですかね!!
お粗末ながら・・・

この回答への補足

お早い回答ありがとうございます!
さらにお聞きしたいのですが、あまりにも初歩的なことかもしれませんが、よろしければ教えていただきたいです。

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

補足日時:2005/07/12 18:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!