0

在数据库中,我有一列acc_typeas int,如果 $_SESSION['accountTpye']==1 然后允许该用户编辑其他用户的帖子,我正在尝试对此进行编码,

我应该使用 and 而不是 && 吗?” 或 , || ”。

示例代码:

if(isset($_SESSION['username']) && ($_SESSION['username']==$dnn2['author'] || $_SESSION['accc_type']==1['username'])) {
    echo "<a href='edit.php'>Edit</a>";
}
4

2 回答 2

0
if((isset($_SESSION['username']) && $_SESSION['username']==$dnn2['author']) || $_SESSION['acc_type']==1){
    echo "<a href='edit.php'>Edit</a>";
}

这部分没有意义:

$_SESSION['acc_type']==1['username']

如果您只是删除最后一个 ['username'] 然后将会话用户名部分包装为条件的第一部分,因此 acc_type 不依赖它,那么事情应该没问题

更新:

在您的 login.php 文件中找到此部分:

$req = mysql_query('select password,id from users where username="'.$username.'"');
$dn = mysql_fetch_array($req);
if($dn['password']==sha1($password) and mysql_num_rows($req)>0)
{
     $form = false;
     $_SESSION['username'] = $_POST['username'];
     $_SESSION['userid'] = $dn['id'];

您还需要选择 acc_type。假设它是 users 表中的一个字段,修改查询以读取:

'select password,id, acc_type from users where username="'.$username.'"'

然后确保设置会话变量:

     $form = false;
     $_SESSION['username'] = $_POST['username'];
     $_SESSION['userid'] = $dn['id'];
     $_SESSION['acc_type'] = $dn['acc_type'];

当您对此进行测试时,请确保您注销然后重新登录。

于 2012-11-29T22:14:08.940 回答
0

我认为这将解决您的问题:

if(isset($_SESSION['username']){

  if( ($_SESSION['username']==$dnn2['author']) || ($_SESSION['acc_type']==1)  ){
      echo "<a href='edit.php'>Edit</a>";
   }

}

于 2012-11-29T22:16:35.200 回答