0

我在下面有这个脚本,它扫描允许查看帖子的用户。我如何更新它,以便它将查看人员的 ID 与存储在该字段中的 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();
    }

    ?>
4

1 回答 1

0

我会简单地将其添加到查询中(尽管我对您如何准确填写表格$personid有疑问...):posts

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

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

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

编辑:基于Who_can_see可以包含逗号分隔的条目列表的事实,您可以使用原始脚本,并且只需更改匹配方式,例如使用stripos.

if ( stripos($userallowed, $personid) !== false ) {
    // $personid is found in $userallowed
    echo("allowed");
} else {
    echo("not allowed");
    die();
}
于 2012-04-26T01:01:22.687 回答