2

ユーザーが自分の Twitter アカウントを登録してリンクできるアプリケーション ive を作成しました。

誰かがスパム目的でユーザーを作成した後、Twitter がこのユーザーを削除した場合でも、彼らは私のサイトに残ります。その後、別のユーザーがそれらをフォローしようとすると、ユーザーが有効ではなくなったことを示すメッセージが返されますが、これは深刻な問題であり、スパムアカウントがたくさんあります.

私の現在の解決策は、ページが読み込まれるときに、jQuery チェックを使用して、twitter ユーザーの画像が読み込まれるかどうかを確認し、設定されていない場合はそのユーザーが何も表示しないようにすることです。

しかし、私のページを出力する前に確認する方法はありますか?

ありがとう


これは私のページにある php です。古いことはわかっていますが、ユーザーが Twitter に存在するかどうかを確認し、現在持っているものと混ぜる方法はありますか?

申し訳ありませんが、PHP は初めてです。

$rs = mysql_query("select produgg_users.id, twitterUser, coff, credits from produgg_users where twitterUser != '' and active !='' and credits >= coff and  
                produgg_users.id IN (select concat_ws(',', id) from produgg_users where credits > 0 and id != ".$usersClass->userID().") and produgg_users.id NOT IN (select concat_ws(',', followedID) from produgg_activity where followerID = '".$usersClass->userID()."') and produgg_users.id NOT IN (select concat_ws(',', userid) from produgg_featured) ORDER BY coff DESC LIMIT 30;") or die(mysql_error());    

$nr = @mysql_num_rows($rs);

if($nr != 0) {
    print "<h2>More Friendr Users!</h2><div>";

    while($row=@mysql_fetch_object($rs))
    {
        $divLeft = '<div class="user-box" id="thediv_'.$row->id.'"><div class="twithandlepic"><img src="http://api.twitter.com/1/users/profile_image/';
        $divRight = '<div class="twithandle">';
        $clearDiv = '<div style="clear:both;"></div>';
        $row->coff = $row->coff - 1;


    print $divLeft.strip_tags($row->twitterUser)."?size=bigger\" style=\"width:73px; height:73px;\"/><br \/>".$row->twitterUser.$divRight."<a href='javascript:void(0);'   id='vote_$row->id' class='getPoint'>Get $row->coff <input type='hidden' value='$row->coff' class='credoff' name='credoff'/> credit(s)</a><br /></div>$clearDiv</div></div>"; 


} print "</div>";

echo " <a href='earn-credits.php' class='refreshlist'>Refresh</a>";

}else{

    print "<p>No twitter users to show</p>";    
}
4

2 に答える 2

3

にリクエストを送信twitter.com/usernameして、応答コードを確認するだけです。ユーザーが存在する場合は 200、存在しない場合は 404 です。たとえば、http://twitter.com/somefakepersonを試すと、404 が返されます。

CURL を使用すると、次のようになります。

   while($row=@mysql_fetch_object($rs)) 
    {
      $ch = curl_init('http://twitter.com/'.$row->twitterUser);
      curl_exec($ch);

      if(!curl_errno($ch))
      {
       $info = curl_getinfo($ch);
       if($info['http_code'] == '200') {
        $divLeft = '<div class="user-box" id="thediv_'.$row->id.'"><div class="twithandlepic"><img src="http://api.twitter.com/1/users/profile_image/';
        $divRight = '<div class="twithandle">';
        $clearDiv = '<div style="clear:both;"></div>';
        $row->coff = $row->coff - 1;


        print $divLeft.strip_tags($row->twitterUser)."?size=bigger\" style=\"width:73px; height:73px;\"/><br \/>".$row->twitterUser.$divRight."<a href='javascript:void(0);'   id='vote_$row->id' class='getPoint'>Get $row->coff <input type='hidden' value='$row->coff' class='credoff' name='credoff'/> credit(s)</a><br /></div>$clearDiv</div></div>"; 


       }
     }
     curl_close($ch);
   }

余談ですが、無効なユーザーにヒットしたときはいつでも更新を DB に送り返して、何らかの方法でユーザーを削除またはフラグ付けすることも良いかもしれません。その後、DB レベルで将来的にそれらのユーザーを除外できます。

于 2012-06-02T19:23:10.023 に答える
2

Twitter API 呼び出しGET users/lookupを使用すると、ユーザーがアクティブかどうかを確認できます。たとえば、次のエンドポイントに REST API 呼び出しを発行します。

https://api.twitter.com/1/users/lookup.json?
    screen_name=twitterapi&include_entities=true

ユーザーが存在する場合、HTTP 200 OK 応答が返されます。ただし、存在しないスクリーン名での呼び出しは、404 を返します。次に例を示します。

https://api.twitter.com/1/users/lookup.json?
    screen_name=dsklfjdkl&include_entities=true

ユーザーにページを表示する前に、サーバーはユーザー名が存在するかどうかを確認できます (存在しない場合は、ページから削除するか、データベースで無効としてマークします)。

于 2012-06-02T19:21:04.407 に答える