0

我一直在使用以下代码开始会话,但在“欢迎”之后我无法显示用户名。我怎样才能做到这一点?我正在使用电子邮件和 ID 登录。电子邮件、ID 和用户名存储在 MySQL 中。同样,当登录时,登录按钮应该消失,并且应该出现注销按钮。

<div class="hello"> 

<?php  
  session_start();  
  require_once("config.php");  
  if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) 
  {  
    header ("Location: login.html");  
    exit;  
  }  
  else  
  {  
    echo "Welcome </b>,  <a href=logout.php>Logout</a> <br><br>";  
  }  
?>

</div> 
4

5 回答 5

1

根据php 文档

要使用基于 cookie 的会话,必须在向浏览器输出任何内容之前调用 session_start()。

因此,在 session_start() 调用之前删除页面中的任何 HTML 或输出。

在你的情况下删除从你的html。

或者您可以在第一行使用ob_start(),这样它甚至可以消耗任何意外输出。在 session_start() 之前甚至不能输出新行。如果您使用此方法,请在完成所有与会话(标头)相关的工作后使用ob_clean()方法。

于 2013-05-11T13:35:52.637 回答
1

header()并且session_start()必须都出现在任何 HTML 之前。您可以设置$_SESSION['username']$_SESSION['email']处理登录信息的位置。

于 2013-05-11T13:12:55.593 回答
1

不要这样做:

<div class="hello"> 

<?php  
    session_start(); 
    require_once("config.php");

像这样做:

<?php session_start(); ?>

<div class="hello"> 

<?php  
    require_once("config.php");

session_start()必须在任何输出(包括空格和 UTF-8 BOM)发送到浏览器之前调用。因此,必须在任何包含文件中的任何内容输出之前进行调用。这通常没有问题,因为脚本不应该关心会话何时启动。

于 2013-05-11T14:19:54.317 回答
0

您应该考虑创建一个get_username_from_email()像这样调用的函数,

<?php

function get_username_from_email($email) {
   $username = mysql_real_escape_string($email);
   return mysql_result(mysql_query("SELECT `username` FROM `YOUR_TABLE` WHERE `email` = '$email'"), 0, 'user_id');
}

?>

在上面的代码YOUR_TABLE中是指您的表名,其中包含基本数据。

然后,您可以在现有代码中执行以下操作:

<?php  
   session_start();  
   require_once("config.php");  
   if (!(isset($_SESSION['login']) && $_SESSION['login'] != '')) 
   {  
      header ("Location: login.html");  
      exit;  
   }  
   else  
   {  
      echo "Welcome". get_username_from_email($_SESSION['login']) ." </b>,  <a href=logout.php>Logout</a> <br><br>";  
   }  

?>

但是,我不太确定这一点。

于 2013-05-11T13:19:11.460 回答
0

假设您有一个用户名和密码字段,而不是当用户提交详细信息时,如果没问题。然后,登录后,你必须在会话中保留他的名字(我不推荐它)但是,你可以这样做

// if use is verified
$_SESSION['logged'] = $username; 

现在,在您的会话文件中,您可以显示

echo 'Welcome '.$username.' You, are logged in'; 
于 2013-05-11T13:20:27.933 回答