如何匹配多个ID的一个ID?

时间:2012-04-26 00:50:42

标签: php security matching verification

我在下面有这个脚本,它会扫描允许查看帖子的用户。如何更新它以便它将查看的人的ID与存储在该字段中的人匹配。如果它匹配,则它不起作用。存储的条目将类似于99394david,324234smith,34343jane。所以这个脚本我没有匹配它。

    $kit = mysql_real_escape_string($_GET['id']);

$sql="SELECT `Who_can_see` from `posts` where `post_id` = '$kit'";  
    $result=mysql_query($sql);

    $query = mysql_query($sql) or die ("Error: ".mysql_error());

    if ($result == "")
    {
    echo "";
    }
    echo "";


    $rows = mysql_num_rows($result);

    if($rows == 0)
    {
    print("");

    }
    elseif($rows > 0)
    {
    while($row = mysql_fetch_array($query))
    {
    $userallowed = htmlspecialchars($row['who_can_see']);
    }
    }

    //$personid is drawn from the database.  its the id of the
     person viewing the link.

    if ( $userallowed == $personid ) {
echo("allowed");
    } else {
echo("not allowed");
    die();
    }

    ?>

1 个答案:

答案 0 :(得分:0)

我只是将$personid添加到查询中(尽管我对您如何准确地填充posts表格有疑问...):

$sql="SELECT `Who_can_see` from `posts`
      where `post_id` = '$kit'
        AND `Who_can_see` = '$personid'";

如果您的结果包含一行,则允许用户查看帖子。

顺便说一句,我还建议使用预准备语句来避免任何潜在的SQL注入问题。

修改:根据Who_can_see可以包含以逗号分隔的条目列表的事实,您可以使用原始脚本,只需更改匹配方式,例如使用{{ 3}}

if ( stripos($userallowed, $personid) !== false ) {
    // $personid is found in $userallowed
    echo("allowed");
} else {
    echo("not allowed");
    die();
}