簡體   English   中英

PHP oop echo會話用戶名?

[英]PHP oop echo session username?

我對如何從數據庫中檢索或回顯用戶名一無所知,

我已經引用了這個

以及更多類似的問題,但是我仍然不明白如何回顯當前的用戶名。

一切正常,我可以登錄和注銷

只是找不到找到回顯當前用戶名的方法

這是代碼

user.php的

public function get_user_sess()
{
    try{

        $query = $this->db->prepare("SELECT * FROM users WHERE user_name=':username'");
        $query->execute(array(':username'=>$username));
        $userRow = $query->fetch(PDO::FETCH_ASSOC);

        return $_SESSION['user_session'] = $userRow['username'];

    }

    catch(PDOExeception $e)
    {
        echo $e->getMessage();
    }
}

public function login($username, $password)
{
    try{
        $stmt = $this->db->prepare("SELECT * FROM users WHERE user_name=:username OR user_pass=:password LIMIT 1");
        $stmt->execute(array(':username'=>$username, ':password'=>$password ));
        $userRow = $stmt->fetch(PDO::FETCH_ASSOC);
        if ($stmt->rowCount() > 0)
        {
            if(password_verify($password,$userRow['user_pass']))
            {
                $_SESSION['login'] = TRUE;
                $_SESSION['user_session'] = $userRow['user_id'];
                return true;

            }

            else{
                return false;
            }
        }
    }


    catch(PDOExeception $e)
    {
        echo $e->getMessage();
    }
}

Profile.php

<?php
session_start();
error_reporting(-1);
require_once 'User.php';

$user = new User();
if(isset($_GET['q'])){
   $user->logout();
   $user->redirect('login');
}


require_once 'layouts/header.php';
?>
<h1>Welcome 
<?php 

$user = new User();
echo $user->get_user_sess();
?>
</h1>

<ul>
    <li><a href="profile.php?q=logout">LOGOUT</a></li>
</ul>

<?php require_once ('layouts/footer.php');?>

的login.php

<?php
session_start();
error_reporting(-1);
require 'Db.php';
require 'User.php';



if(isset($_POST['btn_login'])){


    $username = $_POST['txt_username'];
    $password = $_POST['txt_pass'];


    $guest = new User();
    if($username == "")
    {
        echo "Enter username please";

    }

    if($password == "")
    {
        echo "Enter password please";
    }



    if($guest->login($username, $password)){
        $guest->redirect('profile');      
    }


    else{
        echo "Invalid Entry";
    }





}

require_once 'layouts/header.php';

?>

<div class="container">
    <div class="row">
        <h1>Sign In</h1>


        <form action="" method="POST">
            <div class="form-group">
                <label>Username</label>
                <input type="text" name="txt_username" class="form-control" required/>
            </div>


            <div class="form-group">
                <label>Password</label>
                <input type="password" name="txt_pass" class="form-control" required/>
            </div>


         <button type="submit" name="btn_login" class="btn btn-primary">Log In</button>

        </form>
    </div>
</div>

在user.php文件中,只需設置會話變量即可。 例如在您的函數中:

  $_SESSION['user_session'] = $userrow['username'];

在這里不返回任何東西。 只需設置會話變量。

現在,在要顯示用戶名的任何頁面中,輸入

 session_start ();
 echo $_SESSION['user_session'];

希望它能解決您的問題。 同樣在您的PDO語句中更改

user_name=':username' // in select statement 

user_name=:username   // without inverted commas

在這里,不需要用逗號將':username'寫入。 另外,由於只需要一行,因此不需要FETCH_ASSOC。 因此,請使用fetch()PDO函數。 更多更新:

請參閱首先在應用程序中登錄用戶。 在登錄腳本本身中,設置用戶名會話變量。 然后

  1. 在個人資料頁面中,通過調用訪問會話值

      session_start (); echo $_SESSION['user_session']; 

    如果您有疑問,請更新您的登錄腳本文件,我將向您顯示。

希望你能理解。

第三次更新:

  1. 在登錄功能中看到已經設置了會話變量

     $_SESSION['user_session'] = $userRow['user_id']; 

    因此,您總是從會話變量中獲取我希望的用戶。

  2. 所以在登錄功能本身設置

     $_SESSION['username'] = $userRow['username']; 

    然后在配置文件頁面中調用此變量。 無需調用get_user_sess()函數。 只需啟動會話並獲取變量即可。

另外,您的登錄腳本還必須清除用戶輸入值。

如果為會話分配值,則可以在網站的任何位置進行打印。 檢查以下代碼。

您需要添加session_start(); 在User.php中

user.php的

public function get_user_sess()
{
    try{

        $query = $this->db->prepare("SELECT * FROM users WHERE user_name=':username'");
        $query->execute(array(':username'=>$username));
        $userRow = $query->fetch(PDO::FETCH_ASSOC);

        $_SESSION['user_session'] = $userRow['username'];
        return true;

    }

    catch(PDOExeception $e)
    {
        echo $e->getMessage();
    }
}

Profile.php

    <?php
if (session_status() == PHP_SESSION_NONE){
    session_start();
}
error_reporting(-1);
require_once 'User.php';

$user = new User();
if(isset($_GET['q'])){
   $user->logout();
   $user->redirect('login');
}


require_once 'layouts/header.php';
?>
<h1>Welcome 
<?php echo $_SESSION['user_session']; ?>
</h1>

<ul>
    <li><a href="profile.php?q=logout">LOGOUT</a></li>
</ul>

<?php require_once ('layouts/footer.php');?>

暫無
暫無

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

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