PHP code example of egcservices / rbruteforce2

1. Go to this page and download the library: Download egcservices/rbruteforce2 library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

egcservices / rbruteforce2 example snippets


Plugin::load('RBruteForce', ['bootstrap' => false, 'routes' => true]);

class UsersController extends AppController {
	
	public $components = ['RBruteForce.RBruteForce'];

public $_options;
public $_ipsAllowed;

public function initialize()
{
	parent::initialize(); // TODO: Change the autogenerated stub
	$this->_options = [
		'maxAttempts'     => 4,                        //max failed attempts before banning
		'expire'          => "10 minutes",             //expiration time
		'dataLog'         => true,                     //log the user submitted data
		'urlToRedirect'   => '/users/reportBruteForce' //url to redirect if failed.
	];
	$this->_ipsAllowed = ['127.0.0.1', '172.68.26.185', '191.179.112.160'];
}

public function login() 
{	
	if ($this->request->is('post')) {
		$myIp = $_SERVER['REMOTE_ADDR'];
		if (!$this->RBruteForce->isIpBanned($this->_options) || in_array($myIp, $this->_ipsAllowed)) {
			$user = $this->Auth->identify();
			if ($user) {
				$this->Auth->setUser($user);
				return $this->redirect($this->Auth->redirectUrl());
			}
			$this->RBruteForce->check($this->_options); //unsuccessful logins will be checked
			$this->Flash->error(__('Invalid username or password, try again'));
		} else {
			$this->Flash->error(__("Please, wait {$this->_options['expire']} to try login again!'));	
		}
	} else {
		if ($this->RBruteForce->isIpBanned($this->_options)) {
			$this->Flash->error(__("Please, wait {$this->_options['expire']} to try login again!'));
		}
	}
}

$options = [
	'maxAttempts' => 4,			 //max failed attempts before banning
	'expire' => '3 minutes',	 //expiration time
	'dataLog' => false,			 //log the user submitted data
	'attemptLog' => 'beforeBan', //all|beforeBan
	'checkUrl' => true,			 //check url or not
	'cleanupAttempts' => 1000,	 //delete all old entries from attempts database if there are more rows that this
	'urlToRedirect'     => '/r_brute_force/Rbruteforces/failed' //url to redirect if failed.
	];
$this->RBruteForce->check($options);

$this->RBruteForce->check(
		[
		'maxAttempts' => 3,
		'attemptLog' => 'all'
		]
	);

$this->RBruteForce->check();

//CreateRBruteForces Migration
public function change()
{
	$table = $this->table('rbruteforces', ['id' => false, 'primary_key' => ['expire']]);
	$table
		->addColumn('ip', 'string', ['length' => 255])
		->addColumn('url', 'string', ['length' => 255])
		->addColumn('expire', 'timestamp', ['default' => null])
		->addIndex('ip');
	$table->create();
}
  
//CreateRBruteForceLogs Migration
public function change()
{
	$table = $this->table('rbruteforcelogs');
	$table->addColumn('data', 'text', ['null' => true]);
	$table->create();
	$table->changeColumn('id', 'integer', ['signed' => false, 'identity' => true]);
	$table->update();
}