PHP 生成随机网址并限制访问频率,附带 CURL 访问示例
PHP 生成随机网址并限制访问频率
本代码示例展示了如何使用 PHP 生成随机网址,并添加访问频率限制功能,同时附带了使用 CURL 访问指定网址的示例代码。
代码示例
<?php
$usedIds = array(); // 已使用的ID数组
$limit = 3; // 访问频率限制,每分钟最多访问3次
$lastAccess = isset($_COOKIE['last_access']) ? $_COOKIE['last_access'] : 0; // 获取上次访问时间
if (time() - $lastAccess < 60 && isset($_COOKIE['access_count']) && $_COOKIE['access_count'] >= $limit) {
// 如果距离上次访问不足1分钟且访问次数已达上限,提示用户稍后再试
echo '访问频率过高,请稍后再试';
} else {
do {
$id = rand(1, 100); // 生成1-5000的随机ID
} while (in_array($id, $usedIds)); // 如果已使用过,则重新生成
$usedIds[] = $id; // 将使用过的ID加入数组
$hash = substr(md5('yg_book_' . $id), 5, 16); // 获取hash值
$url = 'http://www.example.com/book.php?id=' . $id . '&hash=' . $hash; // 拼接网址
echo $url; // 输出网址
if (time() - $lastAccess >= 60) {
// 如果距离上次访问已经超过1分钟,重置访问次数
setcookie('access_count', 1, time() + 60);
} else {
// 否则增加访问次数
setcookie('access_count', $_COOKIE['access_count'] + 1, time() + 60);
}
setcookie('last_access', time(), time() + 60); // 更新上次访问时间
// 使用curl访问指定网址
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
}
?>
代码解析
- 使用
rand()函数生成随机ID。 - 使用
in_array()函数检查ID是否已使用过,如果已使用则重新生成。 - 使用
md5()函数生成hash值。 - 使用
setcookie()函数设置访问次数和上次访问时间。 - 使用
curl_init()、curl_setopt()和curl_exec()函数访问指定网址。
注意事项
- 访问频率限制可以通过修改
$limit变量进行调整。 - 可以使用更安全的hash算法代替
md5()函数。 - 需要根据实际需求修改代码中的URL。
原文地址: https://www.cveoy.top/t/topic/mYBt 著作权归作者所有。请勿转载和采集!