重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

質問です

PHPとMySQLとXHTMLを使って、フォームからのデータ入力システムを制作しています。
質問内容ですが、よくあるフォームでの入力内容を判断するのにどのような方法があるでしょうか?
例えば、フォームのテキスト内容が半角英数字かどうかの判断や
入力されているかどうかの判断など
どのような方法があるでしょうか

思いつく限りでは、確認ページで正規表現などが思いつきます。

何かスタンダードな方法などあれば是非教えていただきたいと思います!


現在NULLもしくは半角数字以外はNGという判断をしたいのですがうまくいきません。
上記内容の判断方法についてもアドバイスがあれば教えていただけると助かります
宜しくお願い致します。
Javascriptも視野にいれています。

A 回答 (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などの大手サイトでは殆どやってません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/11 00:13

hepinさん、早速ご質問ありがとうございます。



さて「フォーム移動先のページで警告文を出したい」とのことのですが、これは技術的には難しくはありません。ただ、一般に このような場合

(1)入力のフォーマットチェック等、データベースなどと照合する必要のないチェックについては、クライアント側(ブラウザ側)で行い、OKなら次の画面へ進むが、NGなら alert などで警告を出して、次の画面へは進まない、というシステムにする。

(2)会員番号が正しいかどうかのチェック等、サーバ側での判断が必要なチェックについては、hepin さんがおっしゃる様な確認画面を設けて、そこでエラー表示を行う。

というふうにすることが多いです。クライアント側のチェックで用が足りるのに(2)の方法をとってしまうと、ユーザが集中した場合などサーバの負担を増やしてしまう…ということも理由としてあるようです。
以上、お答えになっているでしょうか?もしご不明の点ありましたら、追加でご質問どうぞ。

この回答への補足

hkd9001さん回答ありがとうございます。

「フォーム移動先のページで警告文」ですが、伝え方が悪かったです。
私としては、アラートなどを使用せずに次ページもしくは該当のページにNG用の文章を出したいのです
(赤文字で○○を入力してください。や、半角数字で入力して下さいなど)

他の部分で、フォームに内容が記入されていなかった場合などに
次ページでPOSTやGET値がNULLかどうかを確認して警告文を出していたので次ページという伝え方になってしまいました。
該当の入力ページ中で判断とエラー文の表示ができるようならそれでもいいのですがやり方がわかりません汗

PHPもしくはJavascriptでアラートを使わない半角英数字の判断方法などをご教授頂けないでしょうか?

重ね重ねの質問申し訳ありませんが宜しくお願い致します。

補足日時:2006/12/29 19:47
    • good
    • 0

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

補足日時:2006/12/29 02:03
    • good
    • 0

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