PHPで携帯とPC用のサイトを作成しています。

会員入会処理があるのでパスワードを入力させているのですが、半角英数字以外の入力に対してエラーを返すため、以下の処理を行っています。

if( !(mb_ereg(’[^0-9a-zA-Z]’, $_POST[’newpassword’])) )
{
error( ”パスワードにひらがな・カタカナ・漢字・記号が含まれている可能性があります。” );
exit();
}

しかし実際テストしてみるとこのチェックに引っかかりません。
入力時、パスワード欄(input type=”password”)に「あ」と入力するとアスタリスクが2個表示されるところを見ると、1バイトずつに分解してデータを受け取っているような気がします。
また、AUなどでは「input type=”password”」が無効になっているんでしょうか…
どうぞよろしく。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:elf No.1

回答回数76ベストアンサー獲得回数8

ポイント20pt

http://php.net/mbstring

PHP: マルチバイト文字列関数(mbstring) - Manual

正規表現が「0-9a-zA-Z*以外*」,if文条件が「ではない(not)になっているため,

「0-9a-zA-Z」の場合は条件を実行という風になっています.


if( !(mb_ereg(’[0-9a-zA-Z]’, $_POST[’newpassword’])) )

if( (mb_ereg(’[^0-9a-zA-Z]’, $_POST[’newpassword’])) )

でしょう.

id:esecua No.2

回答回数510ベストアンサー獲得回数10

ポイント20pt

if(!ereg(”^([0-9a-zA-Z])”, $_POST[’newpassword’])){

//エラー処理


かなぁ?間違っていたらごめんなさい。

id:insidekick No.3

回答回数7ベストアンサー獲得回数0

ポイント20pt

if (!preg_match(”/^[a-zA-Z0-9]+$/”, $_POST[’newpassword’])) {

エラー処理

}


でどうでしょうか?

id:kouuok

ありがとうございました。

もうちょい考えて見ます。

2005/12/26 20:47:15
id:tomocky1 No.4

回答回数16ベストアンサー獲得回数0

ポイント20pt

PCで行った場合、


<?php

if (mb_ereg(”[0-9a-zA-Z]”, $_POST[”newpassword”])) {

print(”Check OK”);

} else {

print(”Check False”);

}

?>


以上のようなスクリプトで振り分けることができました。

(参考:mbstringの値は、

mbstring.detect_order no value no value

mbstring.encoding_translation Off Off

mbstring.func_overload 0 0

mbstring.http_input pass pass

mbstring.http_output pass pass

mbstring.internal_encoding no value no value

mbstring.language neutral neutral

mbstring.substitute_character no value no value

でデフォルトのままです。)


気になる点は、上記でも述べられていた、”!”がある点と、

”’”が大文字になっている点ですが、プログラム自体はあっていると思います。


あとは、携帯での都合ですが(PCの”type=password”では、ひらがなも一文字です)

一言にAUといっても、XHTML or HDML と二種類あって、機種によってはHTMLは自動的に

HDMLに変換されたりもします。

同じ会社でも古い機種と新しい機種で違うので調べてみてください。

参考までに、AUのEZwebのサイトを載せておきます。

http://www.au.kddi.com/ezfactory/tec/spec/html_con003_2.html#pas...

KDDI au: 入力フォーム変換仕様 > <input type="password">/<input type="radio">/<input type="checkbox">

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません