2012-03-18 225 views
0

所以我有一个登录php文件,在它检查用户名和密码是否正确后,它会重定向到主页面。关键是我想记住它是哪个用户,所以这只是他的会话。PHP登录会话创建

该日志部分:所以现在

if(mysql_num_rows($result) > 0) 
{ 
    session_start(); 
    $_SESSION['username'] = $username; 
    $_SESSION['password'] = $password; 
    header('Location: ../Main_page/main_page.php'); 
} 

主页上使用:

<?php 

$user = $_SESSION['username']; 
?> 

和我而如果我想例如输出用户名,我想以后使用例如:

<dt>Welcome, <em><?php echo $_SESSION['username']?></em></dt> 

但它不工作... 请帮我找错误在此代码

+0

您是否总是在脚本的开头调用'session_start()'? – evotopid 2012-03-18 20:32:18

+3

在会话中输入明文密码绝对没有正当理由。 – bkconrad 2012-03-18 20:37:18

+3

不要将密码放在会话变量中! – Shackrock 2012-03-18 20:38:50

回答

2

请致电session_start()在您的每个脚本的首行,并始终检查变量是否设置为授权/调试目的。这样

if(isset($_SESSION['username'])){ 

//welcome user 
    } 
else 
{ 
    //sorry, you need to log in 
} 

东西请确保您还设置error_reporting(E_ALL)ini_set("display_errors", 1);之前你把session_start()脚本的顶部。此建议是为了响应您的“请帮我在此代码中找到错误”

+0

它工作得很好,直到我表示将该部分添加到我的网站的其他部分。之后,它不会识别它是同一个会话并要求再次登录... – 2012-03-18 22:23:49

+0

您是否已将上述内容添加到每个脚本的顶部? if条件可以在你喜欢的任何地方,但'session_start()'应该在顶部 – jmishra 2012-03-18 22:28:47

+0

是的。当我登录时,我转到主页面,但是如果我尝试从那里重定向到任何其他页面,则表明我需要登录。我使用此代码<?php session_start(); if(!isset($ _ SESSION ['username'])) die(“

您需要登录才能查看此页面)”; – 2012-03-19 12:14:36

0

在将任何输出或标题发送到浏览器之前,将session_start()放在所有页面的顶部。