スレッド表示 | フラット表示〕 全トピック 920 件中 83 番目 次≫ ≪前

エラー処理

created: 2007-10-28 03:21 | modified: 2007-10-30 14:39 | reply: 8

[3946] エラー処理

user: まさこ | created: 2007-10-28 03:21
フォーム入力で何も入力されなかった時に、
エラーメッセージ(ex・・「キーワードを入力してください」)を出すソースを書きたいと思っています。

フォームに何も入力されていない状態で・・・・

1、フォームのボタンが押されたら
<INPUT size="40" type="text" name="keyword">
<INPUT type="submit" name="button" value="検索ボタン">

2、次のページでエラーメッセージを出力し、元の画面に戻るボタンを押すとフォーム入力画面に戻る。

このような処理をしたい場合どのように書いてよいかわかりません。
PHP初心者でレベルの低い質問かもしれませんがよろしくお願いします。
reply: 3950 返信 編集 削除

[3950] エラー処理

user: たか ホームページ | created: 2007-10-29 11:48
はじめまして、

まさこさんが普段どういったコーディングをされているのか
この質問だけでは分からないのでお役にたてるか分かりませんが、
入力チェックの方法を書いてみます。

>2、次のページでエラーメッセージを出力し、元の画面に戻るボタンを押すとフォーム入力画面に戻る。

という事から、
・入力画面(input.html)
・エラー画面(error.html)

の2つのテンプレートがあるものとして考えると、


[入力画面]で、

<FORM action="search.php" method="POST">
<INPUT size="40" type="text" name="keyword">
<INPUT type="submit" name="button" value="検索ボタン">


としておいて、検索ボタンを押すと、search.php が実行されますので、

[serach.php]で、

<?php

//入力データ取得
$data['keyword'] = $_POST['keyword'];

//入力データチェック
if($message=checkUserData($data)){
//ここでエラーテンプレート表示の処理
exit;
}

//ここに検索実行の処理

//ここに検索結果テンプレート表示の処理



//入力データチェック関数
function checkUserData($data){
$message=array();
if(strlen($data['keyword']) == 0){
$message = "「キーワード」が未入力です。<br>\n";
}
return implode("",$message);
}
?>



今回はエラー処理の方法として、シンプルに書いてみましたが、如何でしょうか。
エラーページから戻る方法はヒストリーバックで問題ないかと思います。

受け取ったデータの表示や検索の際には、クロスサイトスクリプティングや、SQL インジェクション
にもご注意ください。
Parent: 3946  reply: 3951 返信 編集 削除

[3951] 修正です

user: たか ホームページ | created: 2007-10-29 12:48
すいません、間違えてました。
関数内だけ修正お願いします。



//入力データチェック関数
function checkUserData($data){
$message=array();
if(strlen($data['keyword']) == 0){
$message[] = "「キーワード」が未入力です。<br>\n";
}
return implode("",$message);
}
?>
Parent: 3950  reply: 3952 返信 編集 削除

[3952] またまたお聞きしたいことが・・

user: まさこ | created: 2007-10-29 14:18
if(isset($_POST[button])){ //ボタンが押されて・・
if(・・・){ //もしキーワードが入力されていたら
       //そのときの処理
}
else(){ //キーワードが入力されていなかったら
      //エラーメッセージ出力し、前の画面に戻る処理
}

というような方法ではかけないのでしょうか?!
function?メソッド?の書き方がいまだわかっていません。
教えてください!
Parent: 3951  reply: 3953 3956 返信 編集 削除

[3953] こんばんは

user: たか ホームページ | created: 2007-10-29 16:56
こんばんは、

まさこさんが書いている方法のままで書けば、問題無いと思いますよ。functionはよく使いそうな処理を整理するものと考えてください。
今回の処理を行うのに直接は関係ありません。
ちなみに使い方は、
「function ユーザー定義関数 php」等でググって頂ければ分かり易い解説がいっぱいでてくると思います。


if(isset($_POST['button'])){
if($_POST['keyword']){
//検索実行
//検索結果表示
}
else{
$message='エラーメッセージ';
//エラー画面表示
}    
}

検索結果と同じ要領で、エラー画面も表示させれば問題無いかと思うのですが、いかがでしょう。
Parent: 3952  reply: 3955 返信 編集 削除

[3955] たかさんへ

user: まさこ | created: 2007-10-30 02:26
ありがとうございます。
if($_POST['keyword']){
・・・このkeywordとはどこかで宣言しないといけないのですか?
また、
エラー画面表示というのは、
echo "キーワードを入力してください。"
でよいのですか?!

また戻るボタンを押して元の画面に戻りたい場合にはどうすればよろしいのですか?
Parent: 3953  返信 編集 削除

[3956] たかさんへ。もう1つお聞きしたいことがあります!

user: まさこ | created: 2007-10-30 02:49
今エラーメッセージを出すことができたのですが、
フォームを入力するファイル(key.php)から、

まず・・・
上のようなボタンが押されて、

今キーワードが入力された場合に処理するphpを書いているフォルダ(例えばkeyword1.phpファイル)

別のファイル(例えばkeyword2.php)でエラーメッセージと戻るボタンを押して違うページで処理をする。。
簡単に書くと・・・
if(isset($_POST[button])){
if(!$word = $_POST[words]){
//keyword2.phpにとぶようにする?
//print "キーワードを入力してください”;・・・エラーメッセージ
       //戻るボタンを設置し、key.phpページに戻るようにする。
   }
   else{
//キーワードが入力されている場合の処理
   }

などにしたいんです。どのように書けばよいのですか?
Parent: 3952  reply: 3958 返信 編集 削除

[3958] おはようございます

user: たか ホームページ | created: 2007-10-30 10:11
こんにちは、たかです。

1、
> ・・・このkeywordとはどこかで宣言しないといけないのですか?

いいえ、宣言の必要はありません。

2、
> エラー画面表示というのは、
> echo "キーワードを入力してください。"
> でよいのですか?!

表示上問題無ければ良いかと思います。

3、
> また戻るボタンを押して元の画面に戻りたい場合にはどうすればよろしいのですか?

例えばですが、

echo 'キーワードを入力してください。';
echo '<input type="button" value="戻る" onClick="history.back()">';

これで実現は可能だと思います。

4、
> keyword2.phpにとぶようにする

header('Location: http://www.example.com/');

この方法を使えば実現は可能です。詳しくはphpマニュアルでお調べください。
また、phpマニュアルには
「header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです」
とありますのでご注意ください。(※header() の前にecho や print されているとエラーが出るという事です。)


今回はエラー処理という事で、お答えさせて頂きましたが、
テンプレートの表示方法となると個人的な好みまで押しつけてしまう
恐れがありますので、何が良いというのは難しい所ですね。
Smarty等のテンプレートエンジンもありますので、一度参考にされてみてはいかがでしょうか。
Parent: 3956  reply: 3961 返信 編集 削除

[3961] ありがとうございます!

user: まさこ | created: 2007-10-30 14:39
エラーメッセージ、戻るボタン表示させることができました!
きちんと戻るボタンを押すと前の画面に戻りました!
ありがとうございます!!
Parent: 3958  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 83 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑