0

データベースにはacc_typeとして列が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']){

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

}

于 2012-11-29T22:16:35.200 に答える
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 に答える