PHP Classes

File: src/Module/SpamBotIP.php

Recommend this page to a friend!
  Classes of stefan   contao PHP Spambot Detection   src/Module/SpamBotIP.php   Download  
File: src/Module/SpamBotIP.php
Role: Class source
Content type: text/plain
Description: Class source
Class: contao PHP Spambot Detection
Detect and block spam bots from accessing sites
Author: By
Last change:
Date: 1 year ago
Size: 1,930 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);

/*
 * sync*gw SpamBot Bundle
 *
 * @copyright https://syncgw.com, 2013 - 2022
 * @author Florian Daeumling, https://syncgw.com
 * @license http://opensource.org/licenses/lgpl-3.0.html
 */

namespace syncgw\SpamBotBundle\Module;

use
Contao\Module;

class
SpamBotIP extends Module {

   
/*
     * @var string
     */
   
protected $strTemplate = 'mod_spambot';

    public function
generate(): string {
        if (
TL_MODE === 'BE') {
           
$obj = new \Contao\BackendTemplate('be_wildcard');
           
$obj->wildcard = '### SPAMBOT IP PROTECTION ###';
           
$obj->title = $this->headline;
           
$obj->id = $this->id;
           
$obj->link = $this->name;

            return
$obj->parse();
        }

        return
parent::generate();
    }

    protected function
compile(): void {

       
// perform checking
       
$obj = new SpamBotMod(intval($this->id));

       
// get IP address
       
$ip = $obj->getIP();

       
// perform checking
       
list($ptyp, $pstat) = $obj->checkIP($ip);
        if (!(
$ptyp & (SpamBot::SPAM | SpamBot::BLACKL)))
            return;

       
// load/save information
       
$v = [
           
'clientIP' => $ip,
           
'Typ' => SpamBot::$Status[$ptyp],
           
'Status' => $pstat,
        ];
       
$this->setCookie('SpamBot', base64_encode(serialize($v)), 0);

        if (
$obj->spambot_page)
           
$this->redirectToFrontendPage($obj->spambot_page);
        else {
           
// set flag for SpamBot::clearTemplate()
           
$GLOBALS['SpamBot']['Catch'] = !$obj->spambot_msg ? $ptyp : NULL;
           
// make data available for template processing
           
$this->Template->clientIP = $v['clientIP'];
           
$this->Template->Typ = $v['Typ'];
           
$this->Template->Status = $v['Status'];
        }
    }

}

?>