welcart会員登録時のメール送信カスタマイズ
こんにちは。
以前からTEMPLXホームページ(welcart使用)の会員登録で不自然な登録をする迷惑な人がいます。
氏名 : sDhRNuPBpCeGxUZ SPDVkpxIiXuqEd
メールアドレス : ***@gmail.com
や
氏名 : utvfkodcps izyvdbuniy
メールアドレス : ***@hotmail.com
など明らかに不自然です。
welcartにはブラックリストのような機能がないので現在、不自然な迷惑登録者を手作業で削除しています。
削除しても不定期で不自然な迷惑登録をしてきますので面倒です。
何目的か分からないので不自然な迷惑登録者にはホームページにアクセスしてもらいたくないのですが現状、一部の不特定閲覧者に対しての完璧なアクセス拒否は存在しません。
しかし可能な限り何か対策を行った方が気分的にも良いと思い考えましたが現状IPアドレス拒否くらいしか思いつきませんでした。
不自然な迷惑登録 → IP確認 → htaccessでアクセス拒否
相手が固定IPアドレスならしばらくは大丈夫だと思いますが動的IPアドレスならイタチごっこになってしまいます。
まずは不自然な迷惑登録者のIPアドレスを確認しなければいけませんが知識のない方だと確認するのは少し大変かもしれません。
ですので会員登録時のメールにIPアドレスが記載されるようにフィルターフックを使用し取得します。
ちなみに商品購入時のメールにはIPアドレスの記載はあります。
まずは会員登録時のメール送信がどこで定義されているか確認します。
管理者へのメール:usces_filter_send_regmembermail_notice
登録者へのメール:usces_filter_send_regmembermail_message
/usc-e-shop/functions/function.phpで定義されていました。
634行目、610行目(2021/3現在)
次にテーマ内のfunction.phpでメール本文を書き換えます。
■管理者へのメール:usces_filter_send_regmembermail_noticeの場合
add_filter('usces_filter_send_regmembermail_notice','custom_filter_send_regmembermail_notice');
function custom_filter_send_regmembermail_notice($message,$user){
$name = sprintf(_x('%s', 'honorific', 'usces'), usces_localized_name(trim($user['name1']), trim($user['name2']), 'return'));
$mailaddress1 = trim($user['mailaddress1']);
$subject = __('New sign-in processing was completed.', 'usces');
$message = __('New sign-in processing was completed.', 'usces') . "\r\n\r\n";
$message .= __('Registration contents', 'usces')."\r\n";
$message .= '——————————–'."\r\n";
$message .= __('Member ID', 'usces') . ' : ' . $user['ID'] . "\r\n";
$message .= __('Name', 'usces') . ' : ' . $name . "\r\n";
$message .= __('e-mail adress', 'usces') . ' : ' . $mailaddress1."\r\n";
$message .= '——————————–'."\r\n\r\n";
$message .= 'EMOTE_ADDR : ' . $_SERVER['REMOTE_ADDR'];
return $message;
}
■登録者へのメール:usces_filter_send_regmembermail_messageの場合
add_filter('usces_filter_send_regmembermail_message','custom_filter_send_regmembermail_message');
function custom_filter_send_regmembermail_message($message,$user){
global $usces;
$res = false;
$mail_data = $usces->options['mail_data'];
$newmem_admin_mail = $usces->options['newmem_admin_mail'];
$name = sprintf( _x('%s', 'honorific', 'usces'), usces_localized_name(trim($user['name1']), trim($user['name2']), 'return') );
$mailaddress1 = trim($user['mailaddress1']);
$subject = $mail_data['title']['membercomp'];
$message = $mail_data['header']['membercomp'];
$message .= __('Registration contents', 'usces')."\r\n";
$message .= '——————————–'."\r\n";
$message .= __('Member ID', 'usces') . ' : ' . $user['ID'] . "\r\n";
$message .= __('Name', 'usces') . ' : ' . $name . "\r\n";
$message .= __('e-mail adress', 'usces') . ' : ' . $mailaddress1."\r\n";
$message .= '——————————–'."\r\n\r\n";
$message .= 'EMOTE_ADDR : ' . $_SERVER['REMOTE_ADDR'];
$message .= $mail_data['footer']['membercomp'];
if( $usces->options['put_customer_name'] == 1 ){
$dear_name = sprintf( __('Dear %s', 'usces'), usces_localized_name(trim($user['name1']), trim($user['name2']), 'return') );
$message = $dear_name."\r\n\r\n".$message;
}
return $message;
}
$_SERVER['REMOTE_ADDR']が登録者のIPアドレスを取得するPHP関数です。
*IPアドレスをテキストで記載しますのでエスケープなどの処理は必要ありません
「登録者へのメール」も参考までに記述しましたが、IPアドレスの記載は「管理者へのメール」だけで良いと思います。
これで登録者のIPアドレスが取得できますので.htaccessでアクセス拒否を行えば面倒ですが気分的にも良いかもしれません。
もし不自然な迷惑登録がある場合は試してみてください。
*カスタマイズする場合は自己責任でお願いします。
2021/03/19追記(続)
welcart会員登録の迷惑登録者拒否のカスタマイズ