0

ユーザーが管理者の場合とユーザーが作成者の場合の 2 つの個別のセッションを作成しようとしています。$type は列挙型として保存されます (作成者または管理者のいずれか)。しかし、私のコードは管理者に対しても作成者セッションを作成しています。PHP と MySQL は初めてです。私のコードのどこにエラーがあるのか​​誰か教えてください。

<?php
include("dbconnect.php");
$con= new dbconnect();
$con->connect();
//create and issue the query
$sql = "SELECT type FROM users WHERE username = '".$_POST["username"]."' AND password = PASSWORD('".$_POST["password"]."')";

$result = mysql_query($sql);

//get the number of rows in the result set; should be 1 if a match
if (mysql_num_rows($result) == 1) {
   $type_num=0;
    //if authorized, get the values
      while ($info = mysql_fetch_array($result)) {
    $type =$info['type'];
    }

     if($type == "admin")
        {
         $_SESSION['type']=1;
         $u = 'welcome.php';
         header('Location: '.$u);  
        }
       else
        {
          $_SESSION['type']=$type_num;
          $u = 'welcome.php';
          header('Location: '.$u);


        }
    } 
      else {
        //redirect back to loginfailed.html form if not in the table
        header("Location: loginfailed.html");
        exit;
        }
        ?>

私のwelcome.phpは以下の通りです

<?php
  session_start();
?>

<html>
<body>
<h2>Welcome.</h2>
<?
if($_SESSION['type']==1){
     echo "You are of the usertype Admin and your session id is ";
     echo session_id();
}
else {
echo "You are of the usertype Author and your session id is ";
echo session_id();
}
?>



</body>
</html>

よろしくお願いします。

4

4 に答える 4

1

権限に役割を使用してみてください。

通常、セッションは1つだけです。つまり、_SESSIONという2つの変数がありません。

ロールの概念を使用すると、ユーザーが何かを実行する権限を持っているかどうかを簡単に確認できます。

于 2012-07-02T06:03:14.800 に答える
0

session_start()var$_SESSION['type']をセッションに登録する前に、コードの最初の部分を呼び出す必要があります

于 2012-07-02T06:03:00.167 に答える
0

あなたのコードはうまく継ぎ目がないと思います。あなたがデータベースをどこで呼んでいるのか、そしてあなたがそこに何を持っているのかわかりません

だからここにあなたがトラブルシュートする方法があります

  while ($info = mysql_fetch_array($result)) {
      $type =$info['type'];
      echo $type . '<br />';
  }

また

  echo '<pre>';
  while ($info = mysql_fetch_array($result)) {
      $type =$info['type'];
      print_r($info);
  }
  echo '</pre>';

そこにadminが表示されておらず、AdminまたはADMINではなく'admin'である必要がある場合。次に、問題はデータベースにあります。管理者が定義した、または正しいスペルの管理者がいません。

ところで。私がそれをどれほどうまくフォーマットしたか見てください。そのように読む方が簡単です。
あなたがそうしなければ、コーダーはあなたのコードを見ません。

于 2012-07-02T06:28:44.947 に答える
0

session_regenerate_id();メソッドを使用して、別のセッション ID を作成してみてください。

于 2012-08-10T14:30:52.423 に答える