CodeIgniter 4: Интеграция Google recaptcha v2 в приложение codeigniter 4
![](/uploads/posts/2022-04/codeigniter-4.webp)
Интеграция Google recaptcha v2 в приложение php codeigniter 4. В этом руководстве вы узнаете, как интегрировать Google recaptcha v2 с формами в приложении codeigniter 4.
Этот туториал покажет вам, как остановить спам для создания ваших форм или защитить ваши формы от спама в приложении php codeigniter 4.
Прежде всего, вам необходимо создать новый ключ Google reCaptcha и секрет для приложения codeigniter 4. Выполните все приведенные ниже шаги для создания ключа или секрета Google reCaptcha. Нажмите здесь, чтобы создать ключ или секрет Google reCaptcha. Когда вы нажмете на данную ссылку, в вашем браузере откроется форма ниже. Теперь заполните эту форму и получите свой ключ и секрет.
Вы отправите вышеуказанную форму, после чего вы получите google reCaptcha secret_site и secret_key.
Теперь скопируйте этот важный ключ и секрет.
Пример проверки Google V2 ReCaptcha в приложении PHP Codeigniter 4
Шаг 1: Загрузите проект Codeigniter 4
На этом шаге загрузите последнюю версию Codeigniter 4. Перейдите по этой ссылке https://codeigniter.com/download. Разархивируйте установку в вашей локальной системе xampp/htdocs/. И измените имя папки загрузки на «demo».
Шаг 2: Основные конфигурации
Далее вы установите базовую конфигурацию, давайте перейдем к app/Config/Config.php и откроем этот файл в текстовом редакторе.
Установите базовый URL-адрес следующим образом
public $baseURL = 'http://localhost:8080'; //Замените на: public $baseURL = 'http://localhost/demo/';
Шаг 3: Создайте таблицу в базе данных
На этом этапе вам нужно создать таблицу в базе данных для приложения codeiginter 4. Итак, зайдите в свою панель phpmyadmin и выполните в ней следующий sql-запрос:
CREATE TABLE users (
id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
name varchar(100) NOT NULL COMMENT 'Name',
email varchar(255) NOT NULL COMMENT 'Email Address',
contact_no varchar(50) NOT NULL COMMENT 'Contact No',
created_at varchar(20) NOT NULL COMMENT 'Created date',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='datatable demo table' AUTO_INCREMENT=1;
Шаг 4: Настройка учетных данных базы данных
На этом шаге вам нужно подключить наш проект к базе данных. вам нужно перейти в app/Config/ и открыть файл Database.php в текстовом редакторе. После открытия файла в текстовом редакторе вам необходимо настроить учетные данные базы данных в этом файле, как показано ниже.
public $default = [
'DSN' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'demo',
'DBDriver' => 'MySQLi',
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'cacheOn' => false,
'cacheDir' => '',
'charset' => 'utf8',
'DBCollat' => 'utf8_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306,
];
Шаг 5: Создайте контроллер
На этом шаге зайдите в app/Controllers и создайте имя контроллера GoogleReCaptcha.php. В этом контроллере нужно добавить в него следующие методы:
<?php namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\RequestInterface;
use App\Models\UserModel;
class GoogleReCaptcha extends Controller
{
public function index(){
return view('home');
}
public function googleCaptachStore() {
$model = new UserModel();
$data = array('name' => $this->request->getVar('name'),
'email' => $this->request->getVar('email'),
'contact_no' => $this->request->getVar('mobile_number'),
);
$recaptchaResponse = trim($this->request->getVar('g-recaptcha-response'));
$userIp=$this->request->ip_address();
$secret='ВВЕДИТЕ ВАШ СЕКРЕТНЫЙ КЛЮЧ';
$credential = array(
'secret' => $secret,
'response' => $this->request->getVar('g-recaptcha-response')
);
$verify = curl_init();
curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
curl_setopt($verify, CURLOPT_POST, true);
curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($credential));
curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($verify);
$status= json_decode($response, true);
if($status['success']){
$model->save($data);
$session->setFlashdata('msg', 'Form has been successfully submitted');
}else{
$session->setFlashdata('msg', 'Something goes to wrong');
}
return redirect()->to('/');
}
}
Шаг 6: Создайте вид
На этом шаге вам нужно создать один файл представления с именем home.php и обновить следующий код в вашем файле:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Codeigniter Google Recaptcha Form Validation Example</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src='https://www.google.com/recaptcha/api.js'></script>
<style>
.error {
color: red;
}
</style>
</head>
<body>
<div class="container">
<div class="error"><strong><?=$this->session->flashdata('msg')?></strong></div>
<br>
<br>
<div class="row">
<div class="col-md-9">
<form method="post" action="<?php echo base_url('google/googleCaptachStore') ?>">
<div class="form-group">
<label for="formGroupExampleInput">Name</label>
<input type="text" name="name" class="form-control" id="formGroupExampleInput" placeholder="Please enter name">
</div>
<div class="form-group">
<label for="email">Email Id</label>
<input type="text" name="email" class="form-control" id="email" placeholder="Please enter email id">
</div>
<div class="form-group">
<label for="mobile_number">Mobile Number</label>
<input type="text" name="mobile_number" class="form-control" id="mobile_number" placeholder="Please enter mobile number" maxlength="10">
</div>
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<div class="form-group">
<button type="submit" id="send_form" class="btn btn-success">Submit</button>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Шаг 7: Создайте маршрут
На этом шаге вам нужно создать маршрут, который отображает таблицу в представлении, поместите следующий код в файл app/Config/Routes.php.
$routes->get('/', 'GoogleReCaptcha::index');
Шаг 8: Запустите сервер разработки
На этом шаге откройте терминал и выполните следующую команду, чтобы запустить сервер разработки:
php spark serve
Затем перейдите в браузер и нажмите ниже URL:
http://localhost:8080
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.