2013-01-31 80 views
-1

我有一個網站,用戶可以請求查看其他用戶的私人照片。整個系統使用php和mysql進行設置。用戶私人照片系統使用mysql和php?

其基本思想是一個用戶可以請求查看他人的私人照片集。默認情況下,數據庫中的每個用戶都被設置爲enum值'o',並且如果他們發送請求以查看圖片並且用戶接受這個請求,則他們的枚舉值變爲1,並且他們可以看到用戶私人照片。

我有這方面的工作正常,但是我已經創建了一個表中調用的權限「有三列,像這樣:

user_id  |  private_id  | privilege 
    2     4     1 
    5     6     0 

所以從上面的表格顯示;用戶ID 2現在可以看到用戶ID 4的私人照片。 但是,用戶標識5不能看到用戶標識6的照片。

就像我說的基本想法的作品,但目前,如果用戶沒有權限或枚舉值爲1,那麼他們會想到用掛鎖看到模板圖像。

目前只有在此表中配對的用戶才能查看掛鎖圖像/模板圖像。

例如,如果user_id = 2且private_id = 1,則用戶2將能夠看到掛鎖/模板圖像。

但是,這是錯誤的,因爲我希望所有用戶都能夠看到掛鎖圖像時(登錄),如果他們都爲0

枚舉值可有人告訴我在哪裏,我錯了?我嘗試過,但我無法弄清楚。謝謝。

我想我還應該提一提,我有一個名爲'users'的表,它保存了我的主要user_id,包括電子郵件,聯繫電話號碼等,表'權限'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

*(相關)* [全局函數](http:// stackoverflow。com/questions/5166087/php-global-in-functions) – Gordon

+0

請按照縮進指引,讓您的代碼變得更易讀,這會讓別人更容易幫忙。 –

回答

0

您試圖在表中的默認狀態的條目。如果某人獲得了許可,只需添加一個條目可能會更容易一些(如果需要,可以使用狀態標誌在其他地方或同一個表中記錄被拒絕的請求)。

現在查找與用戶和收藏組合的記錄,如果這樣的記錄存在用戶有權限並顯示照片。否則,進入默認狀態並顯示拒絕訪問頁面。

這樣你可以避免目前的問題,這就是說,你沒有一個沒有詢問權限的人(因此沒有被拒絕或批准)的條目,你得到一個未處理的情況:沒有掛鎖圖像顯示。