PHP在检查其他配置文件时保留个人会话信息

时间:2017-08-28 20:35:56

标签: php pdo

我有一个我正在开发的社交网站,其中数据库为每个用户存储唯一的ID。我已设法更新个人资料页面,以根据ID显示用户详细信息。但是,我还需要为登录用户保留信息,并且遇到了障碍。在网站上有一个已登录的特定用户的下拉列表(带有注销按钮的名称),但它当前更改为其他用户的ID的数据,而不是登录的用户数据。这是迄今为止的代码:

在个人资料页面上:

<?php
session_start();
require_once 'class.channel.php';
$user_home = new USER();

if(!$user_home->is_logged_in())
{
$user_home->redirect('login.php');
}

/* Get unique ID */
if(isset($_GET['id'])){
$_SESSION['userSession'] = $_GET['id']; 
}

$stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid");
$stmt->execute(array(":uid"=>$_SESSION['userSession']));
$row = $stmt->fetch(PDO::FETCH_ASSOC);


?>

登录用户&#39;下拉名称:

<li class="dropdown">
  <a href="#" role="button" class="dropdown-toggle" data-toggle="dropdown"><i class="icon-user"></i> 
        <?php echo $row['userName']; ?> <i class="caret"></i>
                                </a>
  <ul class="dropdown-menu">
    <li>
      <a tabindex="-1" href="logout.php">Logout</a>
    </li>
  </ul>
</li>

我觉得我可能会倒退这个。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

您需要存储在会话中登录的用户的ID。相反,您从$_GET参数获取它。

这是问题代码:

if(isset($_GET['id'])){
$_SESSION['userSession'] = $_GET['id']; 
}

$_SESSION['userSession']只应在用户登录您的应用程序时设置一次。

$_GET['id']是您当前正在查看的用户的ID。不是登录用户。

答案 1 :(得分:0)

试试这个:

<?php
if( session_id() = '' )
{
    @session_start();
}

//include the class 
require_once 'class.channel.php';

    $user_home = new USER();

    if(!$user_home->is_logged_in())
    {
        // Redirect user if not already loggedIn
        $user_home->redirect('login.php');
    }
    else{
        /* Get unique ID 
        if(isset($_GET['id'])){
            $_SESSION['userSession'] = $_GET['id']; 
        }
        */

        $userID = ( isset( $_GET['id']) && !empty( $_GET['id'] ) ) ? trim($_GET['id']) : '' ;
    }

    $stmt = $user_home->runQuery("SELECT * FROM tbl_users WHERE userID=:uid LIMIT 1");
    $stmt->execute(array(":uid"=>$userID );
    $row = $stmt->fetch(PDO::FETCH_ASSOC);

    if( count( $row ) > 0 )
    {
        // You can set session here if not already set when logged in
        if( $_SESSION['userSession'] == '' )
        {
            $_SESSION['userSession'] = $row['userID']; //  use id from database to store in the session to prevent hacking 
        }
    }


?>

让我们知道它是怎么回事