0

これはphpセッションの問題です..ユーザーが複数回ログインできる場所..同じ/異なる資格情報を持つ同じブラウザで..

1) User1 がログイン..

2) User1 新しいタブで LoginIndex.php を開こうとします..

3) 以前にログインしたページ (User1 がログインした) ではなく、LoginIndex.php ページを表示しています...

4)User1が同じ/異なる資格情報で再度ログインすることを受け入れる..同じブラウザで

ログイン値を再度取得する理由がわかりません..

これは LoginViewController.php のスニペットです

           <?php        

       if (!isset($_POST['submit'])) 
     {


       ?>
            <html>

        <table align="center">
              <tr>

                 <td>
                    <input  class="input" type="text" name="uname" id="uid"  placeholder="Username"  >
                </td>
             </tr>
             <tr>

                <td>
                    <input  class="input" type="password" name="pwd" id="pid" placeholder="Password" >
                </td>
            </tr>

              <tr>
                <td> <input type="submit"  name="submit" value="" > </td>
            </tr>
      </table>

     <?PHP 

      }        

      else
   {

//If you are submitting the form insert the details into database

       $Username = $_POST['uname'];
          $Password = $_POST['pwd'];

            session_start();



     If (!(empty($Username) && empty($Password))) 
      {

      $model = new UsersModel();

      $rowsCount = $model->checkUser($Username,$Password,$User_Type);


       if ($rowsCount!=0)
       {
        $_SESSION['user'] = $Username;

        header("location:loggedin.php");

         } else 
        {
        echo '<script type="text/javascript">alert("Enter username and password correctly");
        window.location.href="LoginViewController.php";</script>';
        }
        }

         }
          ?>      

ここに私が取り組んでいるlogged-in.phpコードがあります...

       <?php

          header("Cache-Control: private, must-revalidate, max-age=0");
           header("Pragma: no-cache");
           header("Expires: Fri, 4 Jun 2010 12:00:00 GMT");

               include('GenericClasses/GenericCollectionClass.php');
               include('Models/UsersModel.php');
               include('DataObjects/Users.php');
               include('DatabaseAccess/DBHandler.php');

         session_start();
        if(!isset($_SESSION['user']))
      {
       header('Location: LoginViewController.php');
        exit();
        }
         echo '"<div style="background:white; text-align:right"> Login as:'.$_SESSION['user'].'
     <a href="LogoutViewController.php" style="text-align:right">Logout</a></div>"';


      ?>

どんな提案でも受け入れられます...

4

3 に答える 3

1

session_unset()session_start() に、logged-in.php ファイルで、すべてのセッション データを削除します。

于 2013-06-28T08:51:06.897 に答える
0

session_unset()beforesession_start()は現在のすべてのセッション変数を削除するため、$_SESSION['username']チェックする前に削除しています。

また、ほとんどのフレームワークにあるある種のフレームワークまたは MVC のようなシステムを使用しているように見えますが、独自の非常に基本的な認証システムを使用していますか? 一般的なフレームワークの 1 つを使用して、それを変更してみませんか? 主要なものはすべて独自の安全な認証システムが組み込まれており、通常、システムに新機能を導入するコミュニティ製のパッケージが多数あります.

于 2013-06-28T09:01:01.240 に答える