في هذا الشرح سنتطرق لإضافة خاصية Google Recaptche في المنتدى وذلك لزيادة الحماية من
السبام
1️⃣ لابد من أن يكون لديك حساب Google
2️⃣ إتباع
وتطبيق الخطوات الموضحة في الصور التالية
نختار الخيار الموضح في الصورة التالية
نضغط على زر Envoyer وسيتم تحويلنا لصفحة أخرى تحوي أكواد خاصة بالموقع
✅ نقوم بنسخ الأكواد لإستخدامها في ما بعد
☷ ☷ ☷ ☷المرحلة الثانية وهي دمج الأكواد في القوالب☷ ☷ ☷ ☷
1️⃣ من لوحة الإدارة نقوم بفتح قالب register ونبحث عن الكود التالي
CODE
{if {$_CONF['info_row']['captcha_o']} == 1 }
{if {$_CONF['info_row']['captcha_type']} == 'captcha_IMG'}
[color=#808080]<dl>
<dt></dt>
<dd class="row1 wd40" rowspan="2">{$lang['Image_Verification']}<br />
<span class="smallfont">{$lang['Verification']}</span></dd>
<dd class="row1 wd31">
<input name="code" id="code_confirm" class="max-input" type="text" size="5" dir="ltr"/>
<img id="turing" src="includes/captcha.php" alt="captcha" />
<input type="button" class="button button_b" value="{$lang['Image_replacement']}" onclick="updateImg()">
<script type='text/javascript'>
var clicks = 0;
function updateImg()
{
clicks++
var doc = document.getElementById("turing");
doc.src = "includes/captcha.php" + "?act=" + clicks;
}
</script></dd>
</dl>
{else}
<dl>
<dt></dt>
<dd class="row1 wd40" rowspan="2">{$lang['random_question']}</dd>
<dd class="row1 wd60">
<span class="smallfont" dir="ltr" title="{$lang['question']}">
{$question}
<u title="{$lang['correct_answer']}">
{$answer}</u></span>
<br />
<input name="code" id="code_confirm" class="max-input" type="text" size="40" dir="{$_CONF['info_row']['content_dir']}" />
<input value="{$answer}" type="hidden" name="code_answer" id="code_answer" class="max-input" />
</dd>
</dl>
{/if}
{/if}[/color]
نضيف أسفله الكود التالي
CODE
<!--recaptcha-->
<dt></dt>
<dd class="row1 wd40" rowspan="2">التحقق من الرمز البشري<br />
<span class="smallfont">{$lang['Verification']}</span></dd>
<dd class="row1 wd31">
<div class="g-recaptcha" data-sitekey="clé du site"></div></dd></dd>
</dl>
<!--recaptcha-->
💡 مراعاة إستبدال clé du site بالكود السابق الذي قمنا بنسخه
2️⃣ في ملف index.php الموجود في جذر المنتدى نبحث عن الكود التالي
CODE
error_reporting(E_ERROR | E_PARSE);
define('IN_PowerBB', true);
// Stop any external post request.
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$Y = explode('/', $_SERVER['HTTP_REFERER']);
$X = explode('/', $_SERVER['HTTP_HOST']);
if ($Y[2] != $X[0] || $Y[2] != $_SERVER['HTTP_HOST']) {
exit('No direct script access allowed');
}
ونضيف أسفله الكود التالي
CODE
// **Only validate reCAPTCHA for registration requests**
if (isset($_GET['page']) && $_GET['page'] == 'register' && isset($_POST['register_button'])) {
// === Google reCAPTCHA Validation ===
$recaptcha_secret = "clé secrète"; // Replace with your actual secret key
if (!isset($_POST['g-recaptcha-response']) || empty($_POST['g-recaptcha-response'])) {
exit('reCAPTCHA verification failed. Please complete the reCAPTCHA.');
}
$recaptcha_response = $_POST['g-recaptcha-response'];
$verify = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret={$recaptcha_secret}&response={$recaptcha_response}");
$response_data = json_decode($verify);
if (!$response_data->success) {
exit('reCAPTCHA verification failed. Please try again.');
}
}
}
💡مراعاة إستبدال clé secrète بالكود السابق الذي قمنا بنسخه
لإضفاء مزيد من الجمالية على التحتنبيه عند عدم التأكد من الكابتشا نضبف الكود التالي في أول قالب register
Java
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
ونضيف الكود التالي في آخر القالب
Java
<script>
document.addEventListener("DOMContentLoaded", function() {
document.querySelector("form[name='register']").addEventListener("submit", function(event) {
var recaptcha = document.querySelector(".g-recaptcha-response").value;
if (!recaptcha) {
event.preventDefault(); // Prevent form submission
Swal.fire({
icon: "error",
title: "خطأ أثناء التسجيل",
text: "الرجاء تأكيد الكابتشا",
footer: '<a href="http://localhost/forum">الرئيسية</a>'
});
}
});
});
</script>
نلاحظ بعد ذلك النتيجة النهائية لنموذج التسجيل
في حالة عدم تأشير رمز الكابتشا يظهر لنا التنبيه التالي