フォームでのデータ入力システムを制作する際の注意点とは?

このQ&Aのポイント
  • PHPとMySQLとXHTMLを使って、フォームからのデータ入力システムを制作しています。フォームの入力内容を判断するための方法や、判断方法についてアドバイスを求めています。
  • フォームのテキスト内容の判断や入力されているかどうかの判断には、確認ページで正規表現を使用すると良いです。
  • 現在NULLもしくは半角数字以外をNGと判断したいがうまくいっていない状況です。Javascriptも視野に入れつつ、アドバイスを求めています。
回答を見る
  • ベストアンサー

フォームでの記入項目

質問です PHPとMySQLとXHTMLを使って、フォームからのデータ入力システムを制作しています。 質問内容ですが、よくあるフォームでの入力内容を判断するのにどのような方法があるでしょうか? 例えば、フォームのテキスト内容が半角英数字かどうかの判断や 入力されているかどうかの判断など どのような方法があるでしょうか 思いつく限りでは、確認ページで正規表現などが思いつきます。 何かスタンダードな方法などあれば是非教えていただきたいと思います! ※ 現在NULLもしくは半角数字以外はNGという判断をしたいのですがうまくいきません。 上記内容の判断方法についてもアドバイスがあれば教えていただけると助かります 宜しくお願い致します。 Javascriptも視野にいれています。

  • hepin
  • お礼率40% (8/20)
  • PHP
  • 回答数3
  • ありがとう数1

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

  • ベストアンサー
回答No.3

PHP単体では、「この方法がスタンダード」っていうのは無いと思います(「PHP単体」というのは、フレームワークなどを使わないという意味です)。 いちおう、よく使われると思われる関数などを挙げておきます。 テキストボックスの入力データを想定しています。 ・ctype関数  半角英数などの基本的なチェックはこれでできます。  http://jp2.php.net/manual/ja/ref.ctype.php ・正規表現  Perl互換  http://jp2.php.net/manual/ja/ref.pcre.php  マルチバイト対応  http://jp2.php.net/manual/ja/function.mb-ereg.php なお、サーバ側チェックは絶対に省略してはなりません。クライアント側チェック(JavaScript)はオマケ程度のものです。 JavaScriptでのチェックは、攻撃者が容易に迂回できる、JSをOffに設定しているユーザがいる、ブラウザのバージョンにより動作が左右されるなるなどの問題があります。なので、Yahooやgooなどの大手サイトでは殆どやってません。

hepin
質問者

お礼

ありがとうございます。 無事正規表現を利用して意図する対応ができました。 まだPerl互換とマルバイト対応の意味がよく分かっていませんが勉強を重ねていきたいとおもいます。

その他の回答 (2)

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

hepinさん、早速ご質問ありがとうございます。 さて「フォーム移動先のページで警告文を出したい」とのことのですが、これは技術的には難しくはありません。ただ、一般に このような場合 (1)入力のフォーマットチェック等、データベースなどと照合する必要のないチェックについては、クライアント側(ブラウザ側)で行い、OKなら次の画面へ進むが、NGなら alert などで警告を出して、次の画面へは進まない、というシステムにする。 (2)会員番号が正しいかどうかのチェック等、サーバ側での判断が必要なチェックについては、hepin さんがおっしゃる様な確認画面を設けて、そこでエラー表示を行う。 というふうにすることが多いです。クライアント側のチェックで用が足りるのに(2)の方法をとってしまうと、ユーザが集中した場合などサーバの負担を増やしてしまう…ということも理由としてあるようです。 以上、お答えになっているでしょうか?もしご不明の点ありましたら、追加でご質問どうぞ。

hepin
質問者

補足

hkd9001さん回答ありがとうございます。 「フォーム移動先のページで警告文」ですが、伝え方が悪かったです。 私としては、アラートなどを使用せずに次ページもしくは該当のページにNG用の文章を出したいのです (赤文字で○○を入力してください。や、半角数字で入力して下さいなど) 他の部分で、フォームに内容が記入されていなかった場合などに 次ページでPOSTやGET値がNULLかどうかを確認して警告文を出していたので次ページという伝え方になってしまいました。 該当の入力ページ中で判断とエラー文の表示ができるようならそれでもいいのですがやり方がわかりません汗 PHPもしくはJavascriptでアラートを使わない半角英数字の判断方法などをご教授頂けないでしょうか? 重ね重ねの質問申し訳ありませんが宜しくお願い致します。

  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.1

hepinさん、こんにちは。 このような場合、JavaScriptで処理するのが適切かと思われます。 (1)以下の、点線「-----」で囲まれた部分(点線は入れないで)をテキストエディタにコピーして「test.html」等という名前で、デスクトップ等わかりやすい場所に保存してください。 (2)いま保存したファイルのアイコンをダブルクリックします。フォームが表示されると思うので、値をいろいろ入れて試してみてください。 ---------------------------------------- <html><head> <script language="javascript"> function check(){ str = frm.text1.value; err = 0; if(str.length > 0) { for (i=0; i<str.length; i++){ moji = str.charAt(i); if(moji <= '0' || moji >= '9') { err = 1; } } } if (err!=0) { alert('半角数字以外のものがまじっています。'); } else { alert('正常です'); } } </script></head> <body> <form name="frm"> 入力<input type="text" name="text1"> <input type="button" value="チェック" onClick="check()"> </form></body></html> ---------------------------------------- これでたぶん、とりあえず お望みの機能を実現していると思います。もし、うまく動かないとか、ご不明の点があれば、追加で質問をくだされば幸いです。

hepin
質問者

補足

hkd9001さん、返信ありがとうございます。 こういうやり方もあったんですね、納得です 欲を言うとアラートでの表示ではなく、フォーム移動先のページで警告文を出したいのですが難しいでしょうか?

関連するQ&A

  • 半角英数字のみを受け付ける入力フォーム

    PHPで半角英数字文字のみを受け付ける入力フォームをつくりたいので教えてください。 JavaScriptではコピペで全角を受け付けてしまうので困っています。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • アンケートフォームを作りたいのですが

    わたしのWEBサイトに「下記のフォームに記入して送信してください!」 みたいなアンケートフォームを作りたいのですが、このような感じで 氏 名  フリガナ   性 別  男 女  /  未婚 既婚   生年月日 年 月 日 歳 必ず英数字半角で入力してください。 出生地  都道府県を選択して下さい市、群または区をご記入ください。 国籍 国籍 現 住 所  郵便番号 必ず英数字半角で入力してください。 TEL   必ず英数字半角で入力してください。 携帯電話   必ず英数字半角で入力してください。 FAX    必ず英数字半角で入力してください。 E‐MAIL   必ず英数字半角で入力してください。 ご意見をお書きください。 質問なのですが、どのようにしてこのフォームを作れば よいのでしょうか。 サイト等教えていただければ、幸いです。

    • 締切済み
    • CSS
  • 半角英数字しか入力させないフォーム

    https://login.yahoo.co.jp/config/login_verify2?.src=ym 上のようなIDを入力するフォームで半角数字、もしくは半角英数字しか入力させないようにするタグや手法があったら教えてください。携帯電話でも入力したいのでjavascript系は避けたいのですが・・・。

    • ベストアンサー
    • HTML
  • フォーム入力のチェック

    フォームの入力をCGI(Perl)でチェックするとき、 全角の漢字、カタカナ、ひらがなでの入力以外は禁止にしたいです。 どなたかいい方法をご存知でしょうか? とりあえず、現在は、 jcode.plで全角英数字⇒半角英数字に変換 フォームに入力された文字列を一文字(半角2文字)ずつ抽出して、 $a=~ s/([^\w ])/'%' . unpack("H2", $1)/eg; でエンコードしたものが%を含んでいるかどうかで判別してます。 でもこれだと全角英数字と半角英数字しかシャットアウトできません。 記号文字なども入力出来ないようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • フォームの項目をユーザーが追加できるようにしたい

    プロフィールの編集画面などで、項目と内容が列挙されており 一番下の空欄に新規項目を入力するフォームがあり、Enterキーを押すと、 入力項目が新しくできて、その内容を入力するフォームが出現するというようなフォームを作成したいと 思っています。 jQueryやjavaScriptなどで、実現できると思うのですが…どなたかご存じないでしょうか よろしくお願いします。

  • 入力フォームをエクセルに書き出す

    質問させてください。 Web上の入力フォームに入力された内容を単純にエクセルに書き出したいのですが、方法がわからず困っています。 たしか、Javascriptで何か命令語があったと思うのですが。。。 フォーム1の内容をエクセルシート1Aに フォーム2の内容をエクセルシート1Bに。。。 のような処理を行いたいのですが、ご教授いただけないでしょうかm(__)m

  • お問い合わせフォームに半角英数字しかはいらない

    こんにちは、モンスターテンプレートからダウンロードしたファイルを編集していたんですが、お問い合わせフォームに半角英数字しか入力出来ない状況になってしまって困ってます;; どなたかお知恵を貸して下さい;;

  • ホームページビスダー6.0 メールフォームでのテキスト欄の文字について

    ホームページビルダー6.0を使っています。 メールフォームにてテキスト欄ごとに、 全角、半角英数字、と属性を指定したいのですが、 ビルダーの機能には有りませんか? (例えば、メールアドレスの欄にカーソルが来たら、 半角英数字にするとか。。) また、入力した内容に不備があるかどうか (必須項目がブランクだったり、メールアドレスの 欄に@の無い文字列が入っていたりするのをチェックする) をHTMLの関数でチェックする事が出来たと思いますが 記述方法を忘れてしまいました。 どなたか、この2点についてお応え願えないでしょうか。 宜しくお願いいたします。m(._.)m ペコッ

  • フォームの入力項目チェックで、つまずいてます。時間がなく困ってます。

    まだ初心者です。 マニュアル片手に、自分でサイトを作ってきました。 メール送信フォームを作成までできたのですが、入力項目のチェックがうまく働かないようです。エラーが生じ、解決できません。(Javascriptをhtmlに組み込んで苦闘してました) あまりのんびりできないので、Javascriptの勉強は後回しにして、この作業を省ける簡単な方法はありませんでしょうか? 項目のチェックがうまくできる、ほかの方法はありませんでしょうか? 質問が不十分な点があるかもしれませんが、よろしくお願いします。

  • 入力フォームのテキスト入力制御(IE)

    Web上で入力フォームを作成し、各入力欄に入力制御を掛けたいのですが、どうすればいいでしょう? 全角かな、半角かな、英数字の制御ができればよいのですが、IEではどのように指定していいのかわかりません。 i-modeでは制御方法はわかったのですが。。。 IEのバージョンは6.0xでお願いします。

専門家に質問してみよう