2011-07-12 19 views
0

私はすべてを検索しましたが、この質問に関連するものは何も見ていません。私はウェブサイトからランダムに生成された10文字の文字列を取得するカールスクリプトを持っています。私はこのデータを取得し、私のブログに表示するために、ウェブサイトの所有者から許可を受けています。私の質問は、ユーザーが私のウェブサイトに来たら、それは文字列を表示し、ページをリフレッシュすると新しい文字列が表示されます。ユーザーごとに1つの文字列を制限して、複数の文字列を取得するために繰り返し更新できないようにするにはどうすればよいですか?ユーザーあたりのカール制限を制限する

$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); 
+2

セッションやクッキーを試しましたか?より高度なソリューションが必要な場合は、ユーザーからログインし、生成された文字列をユーザーのフィールドの一部に設定する必要があります。 – Robik

+0

さらに進んで、データベース、memcache、またはファイルをip/user agentのコンボごとにカウンターとして使用して、ユーザーが新しいクール要求セットを取得するためにクッキーをクリアすることはできません。 –

+0

@Robik '$ matches [0];'をセッションに置くことはできますか? – sarsar

答えて

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

関連する問題