-1

ユーザーが他のユーザーのプライベート写真を見るように要求できるサイトがあります。システム全体は、php と mysql を使用してセットアップされます。

基本的な考え方は、あるユーザーが別のユーザーのプライベートな写真コレクションを見るように要求できるというものです。デフォルトでは、データベース内のすべてのユーザーは「o」の列挙値に設定されており、写真を表示するリクエストを送信し、ユーザーがこれを受け入れると、列挙値が 1 に変更され、ユーザーのプライベート写真を見ることができます。

これは正常に機能していますが、次のような3つの列を持つ「権限」というテーブルを作成しました。

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_id を保持していることにも言及する必要があると思います。テーブル「permissions」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;
        }

コード:

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

プライベート.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>";

 } 


?>


            <? } } ?>
4

1 に答える 1

0

デフォルト状態のエントリをテーブルに入れようとしています。誰かが許可を受け取った場合にのみエントリを追加する方がおそらく簡単です(拒否された要求は、必要に応じてステータスフラグを使用して、他の場所または同じテーブルにいつでも記録できます)。

次に、ユーザーとコレクションを組み合わせたレコードを探します。そのようなレコードが存在する場合、ユーザーには権限があり、写真が表示されます。それ以外の場合は、デフォルトの状態になり、アクセス拒否ページを表示します。

このようにして、許可を求めていない(したがって、拒否または承認されていない)人々のエントリがなく、未処理のケースが発生するという現在の問題を回避できます。南京錠の画像が表示されません。

于 2013-01-31T10:53:42.647 に答える