ホーム > フォーラム > 質問箱 > XCL2.1.8 > functions.phpの変更が反映されない

functions.phpの変更が反映されない
投稿者: nkgvl | 投稿日時: 2010/11/19 1:39 | 閲覧: 11388回
nkgvl

ユーザー登録時に、登録できるメールアドレスのドメインを制限するために、
/include/functions.phpのcheckEmail関数の定義を以下のように変更しました。
しかし、ログアウトして新規登録するときに、別のドメインでも登録できてしまいます。
checkEmailが全く効いていないのではと思い、メールアドレスを「abc」にしてみますと、ちゃんと「不正なメールアドレスです」とはじいてくれますが、自分のgmail等のアドレスを入力すると、あっさり登録できてしまいます。

原因がわかりません。よろしくお願い致します。

登録できるドメイン:test.test.xoops.ac.jp

/include/functions.phpの変更した場所:

if (!function_exists("checkEmail")) {
function checkEmail($email,$antispam = false)
{
if (!$email || !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@test.test.xoops.ac.jp+$/i",$email)){
return false;
}
if ($antispam) {
$email = str_replace("@", " at ", $email);
$email = str_replace(".", " dot ", $email);
return $email;
} else {
return true;
}
}
}

コメント(4)

新しいものから | 古いものから | ネスト表示 | RSS feed
Re: functions.phpの変更が反映されない 
投稿者: Marijuana | 投稿日時: 2010/11/19 9:11
Marijuana

引用:
原因がわかりません。

正規表現が間違っています。
Re: functions.phpの変更が反映されない 
投稿者: Marijuana | 投稿日時: 2010/11/19 9:22 | 親コメント: #20662
Marijuana
引用:
引用:
原因がわかりません。

正規表現が間違っています。


脊髄反射でレスしたら違った

if (!$email || !preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@test\.test\.xoops\.ac\.jp$/i",$email)){

メタ文字のエスケープと最後の+は要らないよね
一応、動くと思うけど

んで本題
登録時にはこの関数は呼ばれていません。
modules/user/forms/AbstractUserEditForm.class.phpのvalidateEmailメソッドを見てみてください
Re: functions.phpの変更が反映されない 
投稿者: nkgvl | 投稿日時: 2010/11/20 0:53 | 親コメント: #20663
nkgvl

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

引用:
登録時にはこの関数は呼ばれていません。
modules/user/forms/AbstractUserEditForm.class.phpのvalidateEmailメソッドを見てみてください


全く気づきませんでした。

checkEmail関数はどこで使われているのかわからないので、デフォルト状態に戻し、AbstractUserEditForm.class.phpとユーザーモジュールの設定を一部いじり、指定のドメイン以外を制限しようと思います。

もっとよく調べたら、フォーラムですでに議論されていました。
http://xoopscube.jp/forum/4789
こちらにありました。申し訳ないです。
Re: functions.phpの変更が反映されない 

    投票(0)

    新しいものから | 古いものから | RSS feed
     
    To Top