限制每个用户的卷曲请求

时间:2011-07-12 15:56:18

标签: php curl limit

我搜遍了所有人,但没有看到任何与此问题有关的内容。我有一个curl脚本,从网站获取一个随机生成的10个字符的字符串。我已获得网站所有者的许可,可以获取此数据并将其显示在我的博客上。我的问题是,当用户访问我的网站时,它显示字符串,如果他们刷新页面,它将显示一个新字符串。如何为每个用户限制一个字符串,以便它们无法反复刷新以获取多个字符串?

以下是我的代码所基于的示例:

$url = "http://m.www.yahoo.com/";  
$ch = curl_init();  

curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_HEADER, 0);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  

$output = curl_exec($ch);  

preg_match('/<dl class="markets clearfix strong small">(.*)<\/dl>/is', $output, $matches);  
echo $matches[0];  

curl_close($ch);  

1 个答案:

答案 0 :(得分:0)

也许您可以使用会话变量来检查用户是否已经有一个字符串。

function startSession(){
    $id = session_id();
    if ($id != '')
        session_write_close();

    if (isset($_COOKIE['PHPSESSID']) && $id != $_COOKIE['PHPSESSID']) {
        session_write_close();
        session_id($_COOKIE['PHPSESSID']);
    }

     session_start();
}

//Start your sessions

startSession();
if (!$_SESSION['UserGotAString']) {
    echo "Some Error msg"
    return;
}
session_write_close();

//Request to Yahoo and regex match comes here..

// Start a session
startSession();
$_SESSION['UserGotAString'] = true
echo $matches[0];
session_write_close();

我不确定这是不是一个好方法。此外,如果您想基于计时器重置会话变量,请检查此链接 Set timeout in php