显示登录用户信息

Posted

技术标签:

【中文标题】显示登录用户信息【英文标题】:Showing logged in user info 【发布时间】:2012-01-12 20:39:51 【问题描述】:

我目前正在编写一个使用 phpmysql 和 Jquery 的成员登录脚本(不过,我需要的帮助仅与 PHP 和 Mysql 数据库有关)。我正在为此使用教程/脚本:Tutorial

所以我目前的脚本看起来与教程中的编码相似,只是针对我的特定 Mysql 数据库进行了更改。我目前想要实现的是,一旦用户登录,我希望向他们显示特定信息,例如他们的姓名、等级等。我在 mysql 数据库中有行也包含 ID,用户名等。具体来说,我希望它在脚本中显示一个点,显示在“demo.php”部分:

<?php
     // FROM TUTORIAL PAGE 
     if(!$_SESSION['id']):
?> 
[...]
<?php
else:

?>

<div class="left">

    <h1>Members panel</h1>

        <p>You can put member-only data here.
</p>
        <a href="registered.php">View a special member page</a>
        <p>- or -</p>
        <a href="?logoff">Log off</a>

        </div>

        <div class="left right">
        </div>

<?php
    endif;
?>

在上面写着“您可以将仅限会员的数据放在这里”的地方,我希望从数据库中提取代码以显示我想要的特定于登录用户名的信息。例如,如果用户“dan124”已登录,只有会员数据的地方,我希望它显示 dan124 的当前排名、累积的积分等。例如,我想从数据库中提取的一行是“pts”。

我尝试了几种不同的代码并修改了一些我发现的东西,但我无法得到我想要实现的目标。我知道基本数据库拉取的方法,但这是我第一次专门处理基于登录用户的信息。

如果有人能提供帮助,我将不胜感激。我确定我不是第一个使用我正在使用的教程并想要这种信息拉的人,我只是找不到任何东西!如果您需要更多信息,请告诉我。

【问题讨论】:

elseif 是什么?您只想在有人登录时才显示此内容,您如何检查?你如何存储会话状态? if 显示在我在顶部提供的教程链接中的完整编码中,因为我正在使用该教程中的编码。 if 在第 2 步,我相信从第 51 行开始 我已经提交了我的编辑 - 我相信现在已经过同行评审。 你试过什么?什么没有奏效?如果您提供此信息,人们会更容易提供帮助:) 【参考方案1】:

我可能误解了您的要求,但我听说您需要有关基本数据库架构和 SQL 的帮助。

使用 MySQL 的一种非常常见的方法是创建一个如下所示的 visitor 表:

visitor_id|visitor_login_name|visitor_current_rank|visitor_points_accumulated
----------|------------------|--------------------|---------------------------
1         |dan124            |veteran             |1254
6892      |mary8             |honored guest       |1

现在,对于我的生活,我不知道您是如何让访问者登录而不做比这更复杂的事情,但假设您让他们登录时使用他们的 login_name 作为会话变量,您会使用以下查询获取您想要的信息。

$query = "SELECT * FROM `visitor` WHERE `visitor_login_name` = $_SESSION[visitor_login_name]";

然后您将运行该查询,结果将包含您作为结果数组成员所需的信息,如下所示:

$rank = $result['visitor_current_rank'];

如果你能就我猜到你意图的程度给我一些反馈,我们可以从这里走得更远。

【讨论】:

你猜对了我的意图。目前我的 MYSQL 表有当前字段:id, usr, pts, rank, pass, email, regIP, dt。主键是 id,唯一键是 usr。 pts 用于积分,rank 用于排名等。我希望信息显示在第 86 行,如教程的第 2 步所示,其中编码已经记录了会话。 哦,另外,我一直假设部分 php 代码类似于 echo "&lt;b&gt;Points:" .$row['pts']. "&lt;/b&gt;";,就像我在非用户数据库拉取中使用的那样,但我一直无法得到类似的行为这个工作。 设法使用您提供的一些变量来完成我的编码。我发布了实际代码作为我的答案,非常感谢汤姆!【参考方案2】:

非常感谢 Tom Haws,他的回答帮助我通过他提供的一些编码找出了我需要的编码。经过大量的试验和错误,我设法制定了 php 编码,以从个人数据库中提取特定信息并在他们登录时显示。这是我得到它的编码:

<?php
if($_SESSION['id'])
$result = mysql_query("SELECT * FROM database WHERE `id` = $_SESSION[id]")
    or die(mysql_error());  

     while($row = mysql_fetch_array( $result )) 
 echo '<b>Points Accumulated:</b>' .$row['pts'];
 echo '<br>';
 echo '<b>Rank:</b>' .$row['rank'];
 ?>

这导致登录的用户只显示他/她的分数和排名,这是我试图实现的目标。

【讨论】:

以上是关于显示登录用户信息的主要内容,如果未能解决你的问题,请参考以下文章

linux如何查看有多少用户登录

显示登录用户信息

如何使用php在页面角落显示用户登录信息

简单用户登录网站(HttpServlet1.2版本)

Linux查看最近登录成功/失败的用户信息

jsp不用框架,如何实现用户登陆后显示用户信息,隐藏登陆框