【问题标题】:show hyperlink only for a certain user's posts仅为特定用户的帖子显示超链接
【发布时间】:2014-09-24 22:05:42
【问题描述】:

我有一个像这样的 posts 表:

post_id            user_id       title            date
   12                  1           abc          7/20/2014
   13                  1           cde          7/21/2014
   14                  2           fgh          7/22/2014

还有一个像这样的 users 表:

user_id          username         email                    password
   1               name1          email1@domain.com         ******
   2               name2          email2@domain.com         ******

posts表中的user_idusers表的外键。

注意:

假设我使用 $_SESSION['user_id'] 成功存储了用户的会话。

假设我也可以成功回显所有 3 个帖子标题及其用户名。

现在我想为某个用户的帖子标题回显编辑超链接(<a href="edit.com">Edit</a>),例如, user_id 1 or 2 登录后。这意味着如果名为name1的用户登录他的帐户并浏览id为14的帖子,他无法看到编辑超链接,因为它属于另一个名为 name2 的用户,其会话 ID(如果有)现在应该无法使用,反之亦然。

对我来说,这是我的代码:

$q = "SELECT title, post_id, p.user_id AS currentuser
      FROM posts AS p
      INNER JOIN users AS u USING (user_id)
      ORDER BY date ASC
      ";
$r = mysqli_query ($dbc, $q);

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

$uid = isset($_SESSION['user_id']);// variable for the seesion

$current_user = $row['currentuser'];// variable for the certain user ID

          if($uid && $uid == $current_user){      
              echo "<a href=\"http://edit.com\"> Edit </a></div>";
            }

然后我测试它,你知道,它在每个帖子标题中显示了 edit 超链接,但不是我所期望的。

你能帮忙吗?谢谢

【问题讨论】:

    标签: php session


    【解决方案1】:
    $uid = isset($_SESSION['user_id']);
    

    这会导致真或假。试试

    $uid = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : -1;
    

    我所做的是使用三元运算符,因此如果设置了会话变量,则将其设置为它,否则将其设置为 -1,这很可能不存在于表 id 列中

    【讨论】:

      猜你喜欢
      • 2020-05-01
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 2021-08-09
      • 2014-05-29
      • 2010-12-03
      相关资源
      最近更新 更多