1C:Bitrix、スパムからの任意のフォームの保護

CleanTalk 1C: CAPTCHAを使用しない Bitrix Anti-Spamモジュールでは、記載されているフォームを保護するだけでなく、あらゆる形式の保護を簡単に作成できます。 モジュールのメソッドは、可能な機能拡張のために特別に作成されました。 ここで、これを行う方法の例を示します。





次のフィールドを持つスパムフォームを確認するとします。

メール、ニックネーム、タイトル、メッセージ。

必要なのは、必要なパラメーターを指定してCleantalkAntispam :: CheckAllBeforeメソッドを呼び出すためのコードを/bitrix/php_interface/init.phpに入れることだけです。



/bitrix/php_interface/init.php

<?php /* You can place here your functions and event handlers AddEventHandler("module", "EventName", "FunctionName"); function FunctionName(params) { //code } */ AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd'); CModule::IncludeModule('cleantalk.antispam'); function my_onBeforeResultAdd($WEB_FORM_ID, $arFields, $arrVALUES) { $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0'); if ($ct_status == 1) { global $APPLICATION; $aParams = array(); $aParams['type'] = 'comment'; $aParams['sender_email'] = isset($arrVALUES['email']) ? $arrVALUES['email'] : ''; $aParams['sender_nickname'] = isset($arrVALUES['nickname']) ? $arrVALUES['nickname'] : ''; $aParams['message_title'] = isset($arrVALUES['title']) ? $arrVALUES['title'] : ''; $aParams['message_body'] = isset($arrVALUES['message']) ? $arrVALUES['message'] : ''; $aResult = CleantalkAntispam::CheckAllBefore($aParams, FALSE); if (isset($aResult) && is_array($aResult)) { if ($aResult['errno'] == 0) { if ($aResult['allow'] == 1) { //Not spammer - just return; return; } else { if (preg_match('//u', $aResult['ct_result_comment'])) { $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/iu','',$aResult['ct_result_comment']); $err_str=preg_replace('/<[^<>]*>/iu', '', $err_str); } else { $err_str=preg_replace('/^[^\*]*?\*\*\*|\*\*\*[^\*]*?$/i','',$aResult['ct_result_comment']); $err_str=preg_replace('/<[^<>]*>/i', '', $err_str); } $APPLICATION->ThrowException($err_str); return false; } } } } } ?>
      
      







実際、コードは非常に単純です。フォームからパラメーターを収集し、検証を呼び出し、結果を分析します。 このようにして、フォームをチェックするモジュールのすべてのメソッドが作成されます。 顧客が必要とする次のフォームに保護を追加する必要がある場合は、指定されたものと同様のメソッドを追加するだけです。 これは、モジュールコード自体を確認することで確認できます。



パラメータ$ WEB_FORM_IDはチェックされず、必要に応じて追加できます。



CleantalkAntispam :: CheckAllBefore()関数内をチェックするとき、JavaScriptテストが使用されることに注意してください。 テストコードは、モジュールがオンになったときに(モジュール設定を含む)サイトページに自動的にインストールされます。また、モジュールがオンになったときにもCleantalkAntispam :: CheckAllBefore()を呼び出す必要があります。そうしないと、JavaScriptテストが失敗します。



また、応答フラグ$ aResult ['stop_queue']はここでは分析されないことに注意してください。 このフラグは明示的なスパムを示し、たとえばコメントの承認などに使用されます。設定されている場合、コメントは拒否され、リセットされている場合は手動でモデレートされます。 このようなチェックは自分で簡単に追加できます。 CleanTalk APIの詳細はこちらです。



All Articles