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;
}
?>

代码解析

  1. 使用rand()函数生成随机ID。
  2. 使用in_array()函数检查ID是否已使用过,如果已使用则重新生成。
  3. 使用md5()函数生成hash值。
  4. 使用setcookie()函数设置访问次数和上次访问时间。
  5. 使用curl_init()、curl_setopt()和curl_exec()函数访问指定网址。

注意事项

  • 访问频率限制可以通过修改$limit变量进行调整。
  • 可以使用更安全的hash算法代替md5()函数。
  • 需要根据实际需求修改代码中的URL。
PHP 生成随机网址并限制访问频率,附带 CURL 访问示例

原文地址: https://www.cveoy.top/t/topic/mYBt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录