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

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などの大手サイトでは殆どやってません。
ありがとうございます。
無事正規表現を利用して意図する対応ができました。
まだPerl互換とマルバイト対応の意味がよく分かっていませんが勉強を重ねていきたいとおもいます。
No.2
- 回答日時:
hepinさん、早速ご質問ありがとうございます。
さて「フォーム移動先のページで警告文を出したい」とのことのですが、これは技術的には難しくはありません。ただ、一般に このような場合
(1)入力のフォーマットチェック等、データベースなどと照合する必要のないチェックについては、クライアント側(ブラウザ側)で行い、OKなら次の画面へ進むが、NGなら alert などで警告を出して、次の画面へは進まない、というシステムにする。
(2)会員番号が正しいかどうかのチェック等、サーバ側での判断が必要なチェックについては、hepin さんがおっしゃる様な確認画面を設けて、そこでエラー表示を行う。
というふうにすることが多いです。クライアント側のチェックで用が足りるのに(2)の方法をとってしまうと、ユーザが集中した場合などサーバの負担を増やしてしまう…ということも理由としてあるようです。
以上、お答えになっているでしょうか?もしご不明の点ありましたら、追加でご質問どうぞ。
この回答への補足
hkd9001さん回答ありがとうございます。
「フォーム移動先のページで警告文」ですが、伝え方が悪かったです。
私としては、アラートなどを使用せずに次ページもしくは該当のページにNG用の文章を出したいのです
(赤文字で○○を入力してください。や、半角数字で入力して下さいなど)
他の部分で、フォームに内容が記入されていなかった場合などに
次ページでPOSTやGET値がNULLかどうかを確認して警告文を出していたので次ページという伝え方になってしまいました。
該当の入力ページ中で判断とエラー文の表示ができるようならそれでもいいのですがやり方がわかりません汗
PHPもしくはJavascriptでアラートを使わない半角英数字の判断方法などをご教授頂けないでしょうか?
重ね重ねの質問申し訳ありませんが宜しくお願い致します。
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>
----------------------------------------
これでたぶん、とりあえず お望みの機能を実現していると思います。もし、うまく動かないとか、ご不明の点があれば、追加で質問をくだされば幸いです。
この回答への補足
hkd9001さん、返信ありがとうございます。
こういうやり方もあったんですね、納得です
欲を言うとアラートでの表示ではなく、フォーム移動先のページで警告文を出したいのですが難しいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
処理後のページ内移動について
-
フォーム送信後の更新ボタンで...
-
テキストリンクをPOST送信したい
-
リンク先のフォームに自動的に...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
プルダウンリンクを外部ファイ...
-
PHPでじゃんけん勝負
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
フォームの状態やGETのURLは保...
-
【PHP&JavaScript】複数の別ウ...
-
フォーム INPUTの文字化け対策...
-
WordのIDataObject::GetData呼...
-
POSTを使わずに値を渡す方法
-
PHPでフォームに表示させたCSV...
-
PHPでフォームデータをサンクス...
-
PHPエラー 教えて下さい
-
セッションにIDを振って値を代入
-
PHPの初心者です。現在チェック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストリンクをPOST送信したい
-
ボタンをクリックでPHP文を実行
-
$_POST['hoge']のデータをフラ...
-
PHPのエラーの解消法について教...
-
phpで、フォームのラジオボタン...
-
フォームのPOST情報が渡らない?
-
PHPでバーコード読み取りって・...
-
セッションを使わずに遷移先画...
-
なぜ、unexpected T_VARIABLEに...
-
アマゾンのような評価の星を選...
-
PHPで検索結果の一覧から任意の...
-
サブウィンドウのFORM内データ...
-
フォーム送信後の更新ボタンで...
-
入力ホーム form actionでphpペ...
-
PHP 入力フォームにて半角スペ...
-
PHPの質問:フォームから受け取...
-
PHPでURLにジャンプするには?
-
フォームにダブルクォーテーシ...
-
チェックボックスのチェック済...
-
ユーザー認証&リンク先振り分け
おすすめ情報