我有一个我正在开发的社交网站,其中数据库为每个用户存储唯一的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>
我觉得我可能会倒退这个。任何帮助表示赞赏。
答案 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
}
}
?>
让我们知道它是怎么回事