【问题标题】:Viewing the profile page - what is seen is different depending on user id. Session issue查看个人资料页面 - 所看到的内容因用户 ID 而异。会话问题
【发布时间】:2012-01-19 07:05:36
【问题描述】:

我有一个正在建设的网站。我有一个登录/注册系统和一个成员资料系统。

当用户登录时,他们会被自动定向到他们的个人资料页面。他们可以选择单击编辑配置文件链接并编辑他们的数据。他们还可以单击另一个链接返回查看他们的个人资料。

目前这很好用。

我遇到的问题是导航栏中有一个名为“用户列表”的链接。此链接应获取数据库中所有当前用户的列表,它在 url 末尾使用 uid=(适当的用户 id #) 执行此操作,但是,当您单击任何这些链接时,它返回的配置文件是登录用户的名称,而不是他们单击的名称。

我知道问题是由我在 profile.php 页面中的函数引起的:

<?php 

include('core/init.inc.php'); 

$user_info = fetch_user_info($_SESSION['uid']);

?>

由于个人资料页面被告知使用会话 uid,我知道任何重定向到 profile.php 页面都会显示登录的用户信息。

所以,如果我将此函数更改为 $_GET['uid']',那么我的问题就会翻转。我能够正确查看用户列表中用户的配置文件,但是我的登录用户无法再查看他们的配置文件或对其进行编辑,因为没有调用会话 uid。

所以,我想我想知道如何解决这个问题。您如何将不适合登录个人的个人资料与他们自己的个人资料分开?请让我知道您需要查看哪些代码,我很乐意发布它。

【问题讨论】:

  • 感谢您的回复 - 您有示例吗?我需要它来理解,如果在 url 末尾有一个 uid=(random#) ,它应该提取该用户 ID 信息而不是会话信息。

标签: php session profile


【解决方案1】:

您可以进行检查,如果设置了$_GET['uid'],则使用此变量获取用户信息,否则使用会话变量获取用户信息。

<?php 

include('core/init.inc.php');    
if (isset($_GET['uid']) && $_GET['uid'] !='')
{
   $user_info = fetch_user_info($_GET['uid']);
}
else
{
   $user_info = fetch_user_info($_SESSION['uid']);
}    
?>

【讨论】:

  • 天哪,你救了我的命!效果很好!!太感谢了。从字面上看,花了大约 3 天的时间试图弄清楚这一点。我对 PhP 非常陌生。谢谢!!!
  • 好的,我正在处理这个问题,它确实解决了用户列表的问题 - 我现在可以在登录会话时查看这些问题。除了现在我使用不同的用户 ID 登录之外,我意识到默认情况下它只是将用户 ID #1 的个人资料信息显示为我的会话信息,无论我使用哪个用户 ID 登录,并且我确实清除了我的缓存。
  • var 转储显示它正在为用户提取正确的信息,但显示的内容与 var 转储不同。
猜你喜欢
  • 2014-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 2023-03-30
  • 1970-01-01
  • 2012-09-30
相关资源
最近更新 更多