簡體   English   中英

成功登錄php后如何顯示用戶名?

[英]How can I display a user's username after successful php login?

因此,我似乎無法按照別人的回答來使它起作用。 所以我的文件設置如下:

  • 指數
  • 寄存器
  • 配置
  • 登出

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 ,該頁面將是您成功登錄后將您重定向到的頁面,我希望它顯示用戶名,例如“ Hello,{username}” ...但是,實現此目標有些麻煩。

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 !!}”是一些PHP代碼,可在其中顯示用戶名。

我只是一輩子都無法弄清楚如何顯示注冊人的用戶名。

在您的config.php頁面上:

    $_SESSION["username"] = "xxx";

在您的home.php上開始會話

       session_start();

以及您想放置用戶名的位置:

     <?php echo $_SESSION["username"]; ?>

在您的情況下,很可能是:

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

要擴展我對您的帖子的評論:您想使用每頁頂部的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。 如果要將某些信息從一頁發送到另一頁,但是對用戶名不利,則這很有用,因為用戶名在整個會話中都是持久的,並且可以編輯鏈接。

我還要說,除非您在用戶注銷時取消設置用戶名,否則我的示例不是很好。 最好使用布爾值login_in或類似的布爾值來跟蹤用戶是否已登錄,然后繼續檢查會話是否具有用戶名。

最后,我用一個非常簡單的解決方案解決了自己的問題。 當這件事發生時,我既愛又恨。

我所做的就是:

      <?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'); ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM