成功登录php后如何显示用户的用户名?

时间:2014-11-30 22:02:20

标签: php html mysql html5

所以我似乎无法按照其他人的答案让这个工作。所以我的文件设置如下:

  • 索引
  • 注册
  • 配置
  • 主页
  • 注销

的config.php

<?php
// These variables define the connection information for your MySQL database
$username = "XXX";
$password = "XXX";
$host = "XXX";
$dbname = "XXX";

$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
try { 
    $db = new PDO("mysql:host={$host}; dbname={$dbname}; charset=utf8",
                   $username, $password, $options);
} catch (PDOException $ex){
    die("Failed to connect to the database: " . $ex->getMessage());
}

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
header('Content-Type: text/html; charset=utf-8');
session_start();
?>

在我的home.php,这是一个页面,它会在您成功登录后重定向到我希望它显示用户名,例如,&#34; Hello,{username}&#34; ..但是我在实现这个目标时遇到了一些麻烦。

home.php 我想要显示用户名:

<ul class="nav navbar-nav navbar-right">
    <li class="divider-vertical"></li>
    <li><a href="#">Hello, {USERNAME HERE!!}</a></li>
    <li><a href="logout.php">Log Out</a></li>
</ul>

{USERNAME HERE !!}&#39;将是一些允许在那里显示用户名的PHP代码。

我不能为我的生活弄清楚如何让它显示注册人的用户名。

3 个答案:

答案 0 :(得分:2)

在config.php页面上

    $_SESSION["username"] = "xxx";
在你的home.php

上开始一个会话

       session_start();

以及您想要输入用户名的地方:

     <?php echo $_SESSION["username"]; ?>
在你的情况下,很可能是:

    <li><a href="#">Hello, <?php echo $_SESSION["username"]; ?></a></li>

答案 1 :(得分:1)

扩展我对您帖子的评论: 您希望使用每页顶部的session_start()在每个页面的顶部启动会话。 如果在另一个页面上设置变量$_SESSION['username'],则可以调用它。

如果用户已登录,以下代码将显示登录表单,否则它将显示其他内容:

<?php session_start() ?>

<ul class="nav navbar-nav navbar-right">
<li class="divider-vertical"></li>

<?php
if(isset($_SESSION['username'])) {
  echo '<li><a href="#">Hello,'. $_SESSION["username"] . '</a></li>';
  echo '<li><a href="logout.php">Log Out</a></li>';
} else {
//put login form or include here.
}
?>
</ul>

我也看到了$ _GET [x]的建议,但这不是最好的选择。 $ _GET [x]用于从链接获取变量(即index.php?username = Foo),其中$ _GET ['username']给出Foo。如果您想将一些信息从一个页面发送到另一个页面,但对于用户名称不是很好,这非常有用,因为它们在整个会话期间都是持久的,并且可以编辑链接。

另外我想说的是,除非您在用户注销时取消设置用户名,否则我的示例不是很好。最好有一个boolean logged_in或类似的东西跟踪用户是否登录,然后继续检查会话是否有用户名。

答案 2 :(得分:0)

我最终用一个非常简单的解决方案解决了我自己的问题。当这种情况发生时,我既爱又恨...

我所做的就是:

      <?php session_start(); ?>
  <ul class="nav navbar-nav navbar-right">
      <li class="divider-vertical"></li>
      <li><a href="#">Hello, <?php echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8'); ?></a></li>
            <li><a href="logout.php">Log Out</a></li>
    </ul>

所以我真正做的就是添加:

<?php session_start(); ?>

<?php echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8'); ?>