使用会话PHP将登录详细信息传递到另一个页面

时间:2012-08-16 16:56:59

标签: php session login

我需要在另一个页面中使用登录详细信息来检索数据库中的数据。基本上,我需要显示可编辑的表单以及登录用户的详细信息。我尝试session_register()在login.php页面中存储用户名。但由于某些原因,我无法在edit.php页面中使用$_SESSION[]显示用户名。我也在函数session_start()之后执行此操作。

我是php新手,所以不知道我是否误解了会话!或者是否有其他方式来传递登录详细信息?

提前致谢

我的代码:

**Login.php**
      <?php
       $userName = $_POST['username'];
      $password = $_POST['password'];
      //Connect to the database
      //query the database
        if($rows==1)
       {
      session_start();
       $_SESSION['user']=$userName;
     header("location:edit_user.php");
     }
      else
      {
     echo 'Data Does Not Match <br /> Re-Enter UserName and Password';
     }
     ?>

**In edit.php**
    <?php
    session_start();
    if(!isset($_SESSION['user']))
   {
    header("location:login_form.php");
   }
   else
   {
    echo $_SESSION['user'];
    }
    ?>

4 个答案:

答案 0 :(得分:2)

首先确保将session_start()放在您使用它的任何脚本的最开头。在您调用session_start()并且包含空格或新内容之前,浏览器无法输出 - 开放<?php标记之前的行。

所以:

<?php
session_start();
...

其次,请确保在重定向后终止脚本,例如:

header("location:edit_user.php");
exit();

这确保重定向后没有代码被执行,因此会话不会被取消设置或会话变量意外更改。

答案 1 :(得分:1)

session_register()是一个已弃用的函数。只需使用$_SESSION["bar"] = "foo"来存储内容。

答案 2 :(得分:1)

以备将来参考,请在提问时发布部分代码。它可以帮助每个人在更具体的情况下给出答案。

<?php
session_start();

if(!isset($_SESSION['Foo']))
{
    $_SESSION['Foo'] = "Bar";
}
?>

来源:http://php.net/manual/en/features.sessions.php

答案 3 :(得分:0)

您可以像这样从数据库中检索数据

//start connection
$connect = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD);
if(!$connect){
    die("Database connection Error".mysql_error());
}

//select database
$db = mysql_select_db(DB_NAME);
if(!$db){
    die("Database selection Error".mysql_error());
}

//get data
$login = mysql_query("SELECT * FROM TABLENAME where user_id={$_SESSION['user_id']}");
$login_data = mysql_fetch_array($login);

现在$ login_data数组包含用户详细信息,您可以指定它们以形成文本字段值..

$ _session ['user_id'] = $ login_data ['user_id']值必须先分配,并在整个会话期间保留在$ _SESSION全局变量中