繁体   English   中英

使用html php成功登录后,如何在以下所有页面中显示用户名?

[英]How can i display the username in all the following pages after successful login using html php?

<?php
    session_start();
    $host="localhost";
    $username="root";
    $admin=$_POST['Name'];
    $pass=$_POST['Password'];
    $dummy=0;
    $con=mysqli_connect($host,$username,'');
    mysqli_select_db($con,"package");
    $query="select * from admin where admin_id like '$admin' ";
    $sql=mysqli_query($con,$query);
    while($row=mysqli_fetch_array($sql,MYSQLI_ASSOC))
    {   
        $dummy=1;
        if($row['password']=='$pass')
        {
            header("Location:booking.html");
        }
        else
        {
            $_SESSION['user'] = $admin;
            header("Location:admin_login.php");
        }
    }
    if($dummy==0)
    {
        header("Location:contact.html");
    } 
    mysqli_close($con);
?>

这是我在 php 中的管理员登录页面,我应该如何存储用户名并在 html 中使用它?我使用过 session_start() 但不知道如何在 html 页面中使用它

首先,您显示的 php 文件中存在一些错误,请参见下文进行更正:

<?php

session_start();
$host="localhost";
$username="root";
$admin=$_POST['Name'];
$pass=$_POST['Password'];
$dummy=0;
$con=mysqli_connect($host,$username,'');
mysqli_select_db($con,"package");
$query="select * from admin where admin_id like '$admin' ";
$sql=mysqli_query($con,$query);
while($row=mysqli_fetch_array($sql,MYSQLI_ASSOC))
{   
    $dummy=1;
    if($row['password']=='$pass')
    {
        $_SESSION['user_id'] = $row['admin_id'];
        $_SESSION['user'] = $admin;
        header("Location:booking.html");
        exit();
    }
    else
    {
        header("Location:admin_login.php");
        exit();
    }
}
if($dummy==0)
{
    header("Location:contact.html");
    exit();
} 
mysqli_close($con);

?>

我在您的代码中修复了以下 2 个错误:

  1. 您必须在调用header('location:...')后编写exit() header('location:...') 否则脚本执行将继续,它不会自行终止。
  2. 如果用户名和密码与数据库记录匹配,则必须设置$_SESSION['user']变量,但如果密码不匹配,则设置会话变量,它将不起作用。

现在您可以在所有其他页面中显示用户名,如下所示,在所有其他页面中使用相同的以下代码:

<?php
session_start();
if ( ! isset($_SESSION["user_id"]) || empty($_SESSION["user_id"]) )
{
   header("Location:admin_login.php");
   exit();
}
// if user is authentic then display username
echo " Hello, " . $_SESSION["user"];

当您使用session_start() 时,会向用户发送一个 cookie,您调用 session_start() 的每个页面都使您能够访问超级全局 $_SESSION。

当您的用户通过身份验证时,您可以设置:

$_SESSION["Username"] = $username;
$_SESSION["UserID"] = $userid;

在其他页面,会话开始后,您可以使用它来检查用户是否已通过身份验证:

if ( ! empty ( $_SESSION["UserID"]))
{
  // User is authenticated
  echo "Welcome back, " . $_SESSION["Username"] . "!";
}

当会话开始时,所有添加到 $_SESSION 的变量将可用于以后的页面。 你不需要做任何事情来保存这些数据,PHP 会在脚本执行完成后自动保存。

在所有页面中显示登录用户名。

  1. 将所有页面扩展名 .html 更改为 .php
  2. 您已经在登录页面中设置了会话,即 $_SESSION['user'] = $admin;
  3. 使用以下代码在所有页面中显示会话值。

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

定义 session_start(); 页面顶部并在您想要的页面上回显会话值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM