tp5 php 登录后 无法转跳显示用户名,需要刷新才能显示,怎么才能解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tp5 php 登录后 无法转跳显示用户名,需要刷新才能显示,怎么才能解决?相关的知识,希望对你有一定的参考价值。

html部分 <ul class="nav nav-pills navbar-nav navbar-right"> empty name="$username" <!--没有登录/没有用户名的时候输出下面的代码--> <li><a href=":url('index/meo/userreg')" target="main">注册</a></li> <li><a href=":url('index/meo/userlogin')" target="main">登录</a></li> else/<!--登陆了,获取了用户的用户名并显示--> <li><a href="#">你好!$username</a></li> <li><a href=":url('index/meo/userlogout')">退出</a></li> /empty </ul>控制器部分//【userlogin】用户登录系统 public function userlogin() return $this->fetch(); //【loginuser】接收 登陆系统 public function loginuser() $data['username']=input('post.username'); $data['password']=input('post.password'); //查空 $param = input('post.'); if(empty($param['username'])) $this->error('用户名不能为空'); if(empty($param['password'])) $this->error('密码不能为空'); //验证用户名 $res=Db::table('user')->where('username',$data['username'])->where('password',$data['password'])->find(); if(empty($res)) $this->error("登陆失败,请检查用户名和密码"); else //定义cookie变量username //记录用户登录信息 session('username',$data['username']); $this->success("登陆成功",url('index/meo/main'));

参考技术A 你存储在session里就要在视图层判断session是否存在。
<?php
if(empty(session('xxx')))?>
//未登录

<?phpelse?>
//已登录

<?php?>
参考技术B tp5没有去看过 看从你代码的最后一行作用看 只是发送一个成功文本信息“登录成功” 到url('index/meo/main') 一般的网站是会弹出一个提示层显示文字 几秒后消失 这个行为并没有刷新页面 页面也没有其他js行为 所以你没看到你要的效果。 按照你现在的写法应该是在层消失 也就是延时2秒左右做自动刷新 或者跳转

使用 PHP 登录后如何显示用户名?

【中文标题】使用 PHP 登录后如何显示用户名?【英文标题】:How can i display the User's name after loggin in using PHP? 【发布时间】:2021-06-24 21:56:21 【问题描述】:

我想在使用 PHP 登录后显示用户名(例如,嘿用户!),我尝试了 $username = $_SESSION['username'];,但它一直没有给我任何信息(嘿!)。 这是我的 PHP 代码:

<?php

session_start();

$connection = mysqli_connect('localhost','root','admin');

mysqli_select_db($connection, 'user_registration');

$email = $_POST['email'];
$password = $_POST['password'];

$verify_emailpass = " select * from user_table where email = '$email' && password = '$password'";
$result = mysqli_query($connection, $verify_emailpass);
$num = mysqli_num_rows($result);

if($num == 1)
  $_SESSION['loggedin'] = true;
  $username = $_SESSION['username'];
  echo "Hey $username !";

else
  echo "<b>Incorrect Email or Password.</b>";

  

?>

这是 Html 登录来源:

<form action="validation.php" method="post">
  <div class="row content">
    <div class="col-12">
      <b><p class="text-align">Se connecter:</p></b>
      </div>
    <div class="col-12">
    <input name="email" type="text" class="input-box shadow-sm" placeholder="Adresse E-mail" required/>
  </div>
    <div class="col-12">
    <input name="password" type="password" class="input-box shadow-sm" placeholder="Mot de passe" required/>
  </div>
  </div>
  <div class="button-2">
    <button id="loginButton" type="submit" class="next-button shadow-sm"><img src="res/icons/button-arrow.svg"   /></button>
  </div>
</form>

我想知道如何在用户登录后从用户那里获取我想要的任何信息,以便将其放置在其他页面(例如个人资料页面等)中?

【问题讨论】:

变量$username是否首先被设置? 不,我正在寻找一种方法从电子邮件和密码所在的位置获取它。 【参考方案1】:

更新这一行

$username = $_SESSION['username'];

有了这个

$username = $result['username']; $_SESSION['用户名'] = $用户名;

【讨论】:

【参考方案2】:
    如果此页面是登录页面,则会话为空

我认为是检查 mysql 电子邮件和密码 比这段代码

$data['username']
用户名是mysql name 列名
<?php

session_start();

$connection = mysqli_connect('localhost','root','admin');

mysqli_select_db($connection, 'user_registration');

$email = $_POST['email'];
$password = $_POST['password'];

$verify_emailpass = " select * from user_table where email = '$email' && password = '$password'";
$result = mysqli_query($connection, $verify_emailpass);
$num = mysqli_num_rows($result);

if($num == 1)
$data =  $result->fetch_assoc()
$_SESSION['username'] = $data['username'];
  $_SESSION['loggedin'] = true;
  $username = $_SESSION['username'];
  echo "Hey $username !";

else
  echo "<b>Incorrect Email or Password.</b>";

  

?>```

【讨论】:

以上是关于tp5 php 登录后 无法转跳显示用户名,需要刷新才能显示,怎么才能解决?的主要内容,如果未能解决你的问题,请参考以下文章

TP5 显示错误信息

使用 PHP 登录后如何显示用户名?

求php实现登录成功后返回首页并在原登录处显示用户名的源代码(类似于铁血网的登录)

登录后如何在会员页面显示全名?

tp5--开启与关闭调试模式

登录后重定向到上一页? PHP