3

ユーザーがadmin(2)またはnoarmal user(1)の場合、異なるコンテンツを表示したいと思います。ログインは正常に機能しますが、ユーザーが「usertype」1または2を持っているかどうかを確認するのがホットかわかりませんか?PHP$_SESSIONを使用したい。

これは私のログインフォームです:

<!-- Log in -->
<form method="post" action="authentication.php">
  <input type="text" name="userid" placeholder="E-mail" required/>
  <input type="password" name="password" placeholder="Password" required/><br>
  <button type="submit" name="submit" class="btn">Log in</button>
</form>

これは私のauthentication.phpです:

session_start();
if(isset($_POST['userid']) && isset($_POST['password'])){
$userid     = $_POST['userid'];
$password   = $_POST['password'];

$dbc        = mysqli_connect('localhost', 'root', '', 'news');
if(!$dbc){
echo "Cannot connect to database";
exit;
}

$query      = "SELECT * FROM users_tbl WHERE email = '$userid' AND password = sha1('$password')";
$result     = $dbc->query($query);
if($result->num_rows)
{
$_SESSION['valid_user'] = $userid;
}
$dbc->close();
}
if(isset($_SESSION['valid_user'])){
header("location:prefs.php");
}else{
header("location:login.php");
echo 'Error';
}

これは私が試したことです:

    <?php 

    mysql_connect('localhost', 'root', '');
    mysql_select_db('news');

    $sql = "SELECT users_tbl.usertype FROM users_tbl";
    $result = mysql_query($sql); 
    $user = mysql_fetch_array($result);
    $_SESSION['user'] = $user['user']; 
    $_SESSION['usertype'] = $user['usertype'];        

    if($_SESSION['user']['usertype'] == 2)
    {?>
    <h1>Only admin stuff</h1>

    <$? }//Endif user is admin(2) ?>

たぶん、ユーザーが管理者であるかどうかを確認するために毎回クエリを実行する代わりに、$ _ SESSION ['usertype']を保存し、これを使用して、管理者の場合、ユーザーがログインしているときに、ユーザーが2であるかどうかを確認できます。 ?しかし、私はこれを行う方法がわかりません。私はこれでかなり新しいです。

4

4 に答える 4

3

これを試して

   if($_SESSION['usertype'] == 2)
{
   //do stuff here 
}
 if ($_SESSION['usertype']) == 1)

 {
 //do stuff here 
 }

編集:あなたがそんなに多くのものを書きたくなくて、あなたがただこれの中に管理者のものを含めたいなら、これをするだけです

  if ($_SESSION['usertype']) == 1 or $_SESSION['usertype']) == 2)

   {
              //do stuff here for them both admin and users
         if($_SESSION['usertype'] == 2 ) 
                                   {
                                  //do extra stuff here for only admin 
                                    }
   }
于 2012-12-18T12:34:49.530 に答える
2

これは古い質問だと思いますが、同様の問題があったため、先週インターネットでこの質問の答えを探しました。「echo_Me」に答えがありましたが、構文が正しくありません。ローカルサーバーでそれをいじった後、これは私がしたことです。

if($_SESSION['usertype']) == 1 or $_SESSION['usertype']) ==2)
//> start           end <                          end <    < end
 {
    //do stuff here for them both admin and users
    if($_SESSION['usertype'] == 2)
     {
      //Do other stuff for usertype 2
     }
  }

かっこは、かっこを開始するよりも多くあります。Webサイトのログインスクリプトを実行するときに必要なすべてのセッション変数を設定しました。したがって、セッション変数が必要な場合は、次のように処理します。

if($_SESSION['user']['usertype'] == 1 OR $_SESSION['user']['usertype'] == 2) { ?>
// Do Stuff for normal user and admin
    <?php } if($_SESSION['user']['usertype'] == 2) { ?>
      // DO Stuff for admin only
    <?php } ?>

ご覧のとおり、最初のifステートメントには1セットの括弧しかありません。そして実際には、phpコードの一部を削除して、通常のhtml / cssマークアップを実行してから、管理者向けのものとしてusertype2のifステートメントを実行できます。

<!-- HTML Markup for both Admin and Regular Users Goes Here above if statement -->
<?php if($_SESSION['user']['usertype'] == 2 { ?>
  // Markup for Admin only
<?php } ?>

また、セッション変数にパスワードを設定しないことをお勧めします。そのコードでは、それができない場合があります。私はPDOを使用しているため、mysqliに慣れていません。

于 2015-06-15T06:01:18.977 に答える
0

そのテーブルにユーザータイプの列を追加してみてください。テーブルからデータをフェッチするときに、その列の値を確認してください。値がadminの場合、テキストを表示します。それ以外の場合は表示しません。

于 2012-12-18T12:44:25.980 に答える
0

セッション変数を使用してユーザータイプを保存できます

ログインしたら、1または2のユーザータイプでdbを確認し、その変数を$_SESSION['user_type']のようなセッション変数で保存する必要があります。

したがって、それに基づいて追跡できます。

于 2012-12-18T12:35:39.213 に答える