我有一个应用程序,我建立了用户可以注册和链接他们的Twitter帐户。
如果有人为垃圾邮件目的创建用户,但Twitter会删除此用户,但他们仍会留在我的网站上。如果另一个用户然后尝试关注他们,我会退回一条消息,说用户不再有效,只是这已经成为一个严重的问题并且有很多垃圾邮件帐户。
我当前的解决方案是页面加载时,jQuery检查是否加载了twitter用户图像,如果没有设置该用户显示无。
我想知道,有没有办法检查BEFORE输出我的页面,所以这样我的用户不会看到一个用户列表,当页面加载其中的X消失,但是所有活动的用户列表?
由于
这是我在我的页面上的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>";
}
答案 0 :(得分: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);
}
顺便说一句,每当您点击无效用户以某种方式删除或标记用户时,最好将更新发送回数据库。然后,您可以在数据库级别过滤掉这些用户。
答案 1 :(得分: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
在向用户显示页面之前,您的服务器可以检查用户名是否存在(如果不存在,只需将其从页面中删除/在数据库中将其标记为已死)。