ограничить количество запросов к каждому пользователю - PullRequest
0 голосов
/ 12 июля 2011

Я искал по всему, но не видел ничего, связанного с этим вопросом.У меня есть скрипт 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 голосов
/ 07 ноября 2014

возможно, вы можете использовать переменную сеанса, чтобы проверить, получил ли пользователь строку.

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();

Я не уверен, что это хороший метод. Также, если вы хотите сбросить базу данных переменной сеанса по таймеру, проверьте эту ссылку Установить тайм-аут в php

...