2012-10-26 54 views
0

我想在登录页面中存储会话变量,然后将其传递到成员页面,但由于某些原因,当您转到成员页面时会话变量不存储。会话变量不会传递到成员页面

<?php 
error_reporting(E_ALL^E_NOTICE); 
session_start(); 
$userid = $_SESSION['userid']; 
$username = $_SESSION['username']; 

?> 

然后一堆html。那么接下来的PHP代码是...

<?php 

$form = "<form action='login.php' method='post'> 
<table> 
<tr> 
<td><input type='text' name='user' /></td> 
</tr> 
<tr> 
<td><input type='password' name='password' /></td> 
</tr> 
<tr> 
<td><input type='submit' name='loginbtn' value='Login' /></td> 
</tr> 
</table> 
</form>"; 

if ($_POST['loginbtn']) { 
$user = $_POST['user']; 
$password = $_POST['password']; 

if ($user) { 
    if ($password){ 
     require("connect.php"); 

     $password = md5(md5("kjfiufj".$password."GSA54")); 
     //make sure login info is correct 
     $query = mysql_query("SELECT * FROM users WHERE username='$user'"); 
     $numrows = mysql_num_rows($query); 

     if ($numrows == 1) { 
      $row = mysql_fetch_assoc($query); 
      $dbid = $row['id']; 
      $dbuser = $row['username']; 
      $dbpassword = $row['password']; 
      $dbactive = $row['active']; 

      if ($password == $dbpassword) { 
       if ($dbactive == 1) { 
       //set session info 
        $_SESSION['userid'] = $dbid; 
        $_SESSION['username'] = $username; 


        echo "logged in as  <strong>$dbuser</strong>. <a href='member.php'>Click here</a> to go to the member page."; 
       } 
       else 
        echo "User not active"; 
      } 
      else 
       echo "Wrong password."; 
     } 
     else 
      echo "The username you entered was not found"; 

     mysql_close(); 
    } 
    else 
     echo "What's the password brah?"; 


} 
else 
    echo "What's the user name brah?"; 



} 
else 
    echo $form; 
?> 

为会员页面的代码

<?php 
error_reporting(E_ALL^E_NOTICE); 
session_start(); 
$userid = $_SESSION['userid']; 
$username = $_SESSION['username']; 

?> 

<?php 
if ($username && $userid) { 
    echo "Welcome <strong>$username</strong>,<a href='logout.php'>Logout</a>."; 
} 

else 
    echo "Please login to acces this page <a href='login.php'>Login here</a>"; 



?> 
+0

这个位做了什么“if($ username && $ userid){” – case1352

+0

它应该检查它们是否存在 – Philip

+0

它们确实存在,因为您刚刚在上面的行中创建它们。不管会话中是否设置了任何内容。检查会话变量是否为空。或在会话变量 – case1352

回答

2

你叫你的登录页面session_start()

如果未将session.auto_start运行时配置选项设置为true,则必须在每个要访问会话变量的页面中拨打session_start()


编辑

其实,你可能$_SESSION['userid']不是空的,因为你实际上分配定义的变量,以它作为$_SESSION['userid'] = $dbid;

但是,您创建$_SESSION['username']通过将值$username它似乎是未定义的。

也许

$_SESSION['username'] = $username; 

应该

$_SESSION['username'] = $dbuser; 
+0

他正在调用session_start() – case1352

+0

没错。我首先想到两个第一代码块是不同的文件。我的错。 – budwiser

0

检查这两个变量实际上包含的东西

session_start(); 
$userid = $_SESSION['userid']; 
$username = $_SESSION['username']; 

?> 

<?php 
if (strlen($username) >0 && strlen($userid)>0) { 
    echo "Welcome <strong>$username</strong>,<a href='logout.php'>Logout</a>."; 
} 

或检查会话变量被设置

session_start(); 
$userid = $_SESSION['userid']; 
$username = $_SESSION['username']; 

?> 

<?php 
if (isset($_SESSION['username']) && isset($_SESSION['userid'])) { 
    echo "Welcome <strong>$username</strong>,<a href='logout.php'>Logout</a>."; 
}