我有一个网站,用户可以请求查看其他用户的私人照片。整个系统使用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>";
}
?>
<? } } ?>
答案 0 :(得分:0)
您正尝试在表中输入默认状态。如果某人已获得许可,则可能更容易添加条目(如果需要,可以使用状态标记始终在其他地方或同一表中记录拒绝的请求)。
现在查找具有用户和集合组合的记录,如果存在这样的记录,则用户具有权限并显示照片。否则,请转到默认状态并显示拒绝访问页面。
通过这种方式,您可以避免当前的问题,即您没有为未获得许可的人提供条目(因此未被拒绝或批准)并且您收到未处理的案例:没有挂锁图像显示。