Jinsi ya Kutengeneza PHP Rate Limiter kwa Forms
Code Sample:
<?php
session_start();
// Weka limit na timeframe (sekunde)
$limit = 5; // max submissions
$timeframe = 60; // kila 60 seconds
if(!isset($_SESSION['form_submissions'])){
$_SESSION['form_submissions'] = [];
}
// Safisha submissions zilizopita zilizopita timeframe
$_SESSION['form_submissions'] = array_filter($_SESSION['form_submissions'], function($timestamp) use($timeframe) {
return ($timestamp + $timeframe) > time();
});
// Angalia kama rate limit imevuka
if(count($_SESSION['form_submissions']) >= $limit){
die("Umezidi idadi ya submissions. Tafadhali subiri dakika chache.");
}
// Ikiwa siyo, ruhusu submission
$_SESSION['form_submissions'][] = time();
// Mfano wa form processing
if($_SERVER['REQUEST_METHOD'] === 'POST'){
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
echo "Form imepokelewa kwa: $name, $email";
}
?>
HTML Form:
<form method="post" action="">
<input type="text" name="name" placeholder="Jina lako" required>
<input type="email" name="email" placeholder="Email yako" required>
<button type="submit">Tuma</button>
</form>
Ufafanuzi:
Code hii inahesabu submissions za mtumiaji kulingana na session.
array_filter inafuta submissions zilizopita timeframe, kuhakikisha kuwa zinahesabiwa tu submissions mpya.
Unaweza kuongeza sophistication kwa kutumia database ili kufuatilia IP au user accounts.
🔗 Links Za Kujifunza Zaidi:
🌐 Faulink Official Website:
https://www.faulink.com/
📘 Jifunze Web Design & Programming (Tutorials / Mifumo):
https://www.faulink.com/excel_mifumo.php
📲 Piga / WhatsApp kwa msaada wa haraka:
https://wa.me/255693118509