在使用电子邮件ID登录时,会话开始不显示用户名

时间:2013-05-11 13:06:40

标签: php

我一直在使用以下代码开始会话,但在'welcome'之后我无法显示用户名。我怎样才能做到这一点?我使用电子邮件和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> 

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

根据php doc

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

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

在您的情况下,从您的HTML中删除

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

答案 2 :(得分:1)

不要这样做:

<div class="hello"> 

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

这样做:

<?php session_start(); ?>

<div class="hello"> 

<?php  
    require_once("config.php");
在将任何输出(包括空格和UTF-8 BOM)发送到浏览器之前,必须调用

session_start()。因此,必须在任何包含文件中的任何内容输出之前进行调用。这通常没有问题,因为脚本在会话启动时不应该关心。

答案 3 :(得分: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>";  
   }  

&GT;

但是,我对此并不十分肯定。

答案 4 :(得分:0)

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

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

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

echo 'Welcome '.$username.' You, are logged in';