कोई उपयोगकर्ता script.php?userid=222
जैसे URL के माध्यम से फ़ाइल द्वारा अनुरोध करेगा। यह उदाहरण फ़ाइल # 222 का रिकॉर्ड दिखाएगा।एक मिनट के भीतर किए गए उपयोगकर्ता अनुरोधों की संख्या को सीमित करने के लिए
अब मैं प्रति मिनट (दूरस्थ आईपी) उपयोगकर्ता को एक मिनट में अधिकतम 5 अलग-अलग रिकॉर्ड तक सीमित करना चाहता हूं। हालांकि, उपयोगकर्ता को किसी भी समय एक ही आईडी रिकॉर्ड तक पहुंचने में सक्षम होना चाहिए।
तो उपयोगकर्ता किसी भी समय फ़ाइल # 222 तक पहुंच सकता है, लेकिन यदि (रिमोट आईपी) उपयोगकर्ता एक मिनट में 5 से अधिक अलग-अलग रिकॉर्ड एक्सेस करता है, तो उसे एक त्रुटि दिखानी चाहिए।
उदाहरण के लिए, एक मिनट के भीतर लगता है निम्न अनुरोध किया जाता है:
script.php?userid=222
script.php?userid=523
script.php?userid=665
script.php?userid=852
script.php?userid=132
script.php?userid=002
तो पिछले अनुरोध पर यह त्रुटि संदेश दिखाना चाहिए।
$id = $_GET['userid'];
if (!isset($_GET['userid']) || empty($_GET['userid'])) {
echo "Please enter the userid";
die();
}
if (file_exists($userid.".txt") &&
(filemtime($userid.".txt") > (time() - 3600 * $ttime))) {
$ffile = file_get_contents($userid.".txt");} else {
$dcurl = curl_init();
$ffile = fopen($userid.".txt", "w+");
curl_setopt($dcurl, CURLOPT_URL,"http://remoteserver.com/data/$userid");
curl_setopt($dcurl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($dcurl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($dcurl, CURLOPT_TIMEOUT, 50);
curl_setopt($dcurl, CURLOPT_FILE, $ffile);
$ffile = curl_exec($dcurl);
if(curl_errno($dcurl)) // check for execution errors
{
echo 'Script error: ' . curl_error($dcurl);
exit;
}
curl_close($dcurl);
$ffile = file_get_contents($userid.".txt");
}
सबसे विश्वसनीय तरीका आईपी पते कहीं (एक फ़ाइल या जैसे को बचाने के लिए होगा डेटाबेस) फ़ाइल आईडी के उपयोग और डेटाटाइम फ़ील्ड के साथ। लेकिन यदि आपके पास बहुत सारे उपयोगकर्ता हैं तो यह कुछ सर्वर यातायात और एक MySQL सर्वर पर भारी भार उत्पन्न करेगा। एक टाइमआउट के साथ एक कुकी या सत्र बहुत कम संसाधन लेगा। लेकिन वे भी बाधित करने के लिए काफी आसान हैं। (सत्र को नष्ट करने के लिए कुकीज़ या बंद ब्राउज़र हटाएं)। मुझे लगता है कि आपको पहले विश्वसनीयता और स्केलेबिलिटी के बीच चयन करना होगा। – icecub
मैं कह रहा हूं * सबसे विश्वसनीय * यहां क्योंकि इन दिनों आप वास्तव में एक आईपी पते पर भरोसा नहीं कर सकते हैं। * टोर * जैसे ब्राउज़र आपको बस एक बटन दबाकर 5 सेकंड के भीतर एक नया आईपी पता दे सकते हैं। तो मैं खुद से पूछता हूं कि क्या यह वास्तव में पहली बार परेशानी का लायक है? – icecub