用户私密照片系统使用mysql和php?

时间:2013-01-31 10:37:22

标签: php mysql

我有一个网站,用户可以请求查看其他用户的私人照片。整个系统使用php和mysql设置。

基本思路是一个用户可以请求查看另一个人的私人照片集。默认情况下,数据库中的每个用户都设置为“o”的枚举值,如果他们发送查看图片的请求,并且用户接受此项,则他们的枚举值将更改为1并且他们可以看到用户的私人照片。

我有这个工作正常,但是我创建了一个名为'permissions'的表,其中有三列如下:

user_id     |     private_id     |   privilege 
   2                  4                  1
   5                  6                  0

所以通过上表的演示;用户ID 2现在可以看到用户ID 4的私人图片。 但是,用户ID 5无法看到用户ID 6的照片。

就像我说的基本想法有效但目前如果用户没有权限或枚举值为1,那么他们就会看到带挂锁的模板图像。

目前只有在此表中配对的用户才能查看挂锁图像/模板图像。

所以例如如果user_id = 2且private_id = 1 - 则用户2将能够看到挂锁/模板图像。

但这是错误的,因为我希望所有用户能够看到挂锁图像(登录时),如果他们的枚举值为0。

有人能告诉我哪里出错了吗?我试过但我无法理解。感谢。

我想我还应该提一下,我有一个名为'users'的表,其中包含我的主user_ids,包含电子邮件,联系电话等,而表'权限'user_id刚刚被设置为另一个表来管理权限,所以这可能需要='users.user_id',但我不太确定,因为我还在学习mysql。

功能:

function account_perms() {
            global $connection;
            global $_SESSION;
            global $profile_id;
            $query = "SELECT ptb_permissions.user_id, ptb_permissions.private_id, ptb_permissions.privellages
                        FROM ptb_permissions
                        WHERE ptb_permissions.private_id = \"$profile_id\"
                        AND ptb_permissions.user_id = ".$_SESSION['user_id']." ";
            $account_perms = mysql_query($query, $connection);
            confirm_query($query, $connection);
            return $account_perms;
        }

CODE:

    <div="tj_gallery">
<? if (logged_in()) { ?>
<?php include('includes/mod_profile/mod_photos/private.php'); ?>
<? } ?>  
</div>

PRIVATE.PHP:

           <?php            
$photo = "data/private_photos/$profile[1]/pic1.jpg";
if (!file_exists($photo)) {
    $photo = "data/photos/0/_default.jpg";
}
$thumb = "data/private_photos/$profile[1]/thumb_pic1.jpg";
if (!file_exists($thumb)) {
    $thumb = "data/photos/0/_default.jpg";
}
 if (logged_in()) {
echo
"<li><a href=\"$photo\" rel=\"shadowbox\" title=\"<strong>$profile[2]'s Photo's</strong>\"><img src=\"$thumb\" width=\"90\" height=\"90\" alt=\"<strong>{$profile[2]}'s Photos</strong>\"  /></a></li>";

}
?>

<? } } ?>

<?

$account_perms = account_perms();

        while ($perms = mysql_fetch_array($account_perms)) {
             if ($perms['privellages'] == '0')  {


$photo = "data/private_photos/0/_default.jpg";
if (!file_exists($photo)) {
    $photo = "data/photos/0/_default.jpg";
}
$thumb = "data/private_photos/0/_default.jpg";
if (!file_exists($thumb)) {
    $thumb = "data/photos/0/_default.jpg";
}
 if (logged_in()) {
echo
"<li><a href=\"privileges.php\" rel=\"shadowbox;height=300;width=500\" title=\"<strong>Access Denied</strong>\"><img src=\"$thumb\" width=\"90\" height=\"90\" alt=\"<strong>{$profile[2]}'s Photos</strong>\"  /></a></li>";

 } 


?>


            <? } } ?>

1 个答案:

答案 0 :(得分:0)

您正尝试在表中输入默认状态。如果某人已获得许可,则可能更容易添加条目(如果需要,可以使用状态标记始终在其他地方或同一表中记录拒绝的请求)。

现在查找具有用户和集合组合的记录,如果存在这样的记录,则用户具有权限并显示照片。否则,请转到默认状态并显示拒绝访问页面。

通过这种方式,您可以避免当前的问题,即您没有为未获得许可的人提供条目(因此未被拒绝或批准)并且您收到未处理的案例:没有挂锁图像显示。