3

我需要另一个页面中的登录详细信息来从数据库中检索数据。基本上,我需要显示带有登录用户详细信息的可编辑表单。我尝试session_register()将用户名存储在 login.php 页面中。但由于某种原因,我无法$_SESSION[]在我的 edit.php 页面中显示用户名。我也在函数之后这样做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

4 回答 4

3

首先,确保您将session_start()其放在使用它的任何脚本的开头。在您调用之前,浏览器不会有任何输出,并且在开始标记session_start()之前包含空格或换行符。<?php

所以:

<?php
session_start();
...

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

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

这样可以确保重定向后不会执行任何代码,因此不会取消设置会话或意外更改会话变量。

于 2012-08-17T13:41:01.977 回答
1

session_register()是一个不推荐使用的功能。只是$_SESSION["bar"] = "foo"用来存放东西。

于 2012-08-16T17:00:48.113 回答
1

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

<?php
session_start();

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

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

于 2012-08-16T17:08:38.083 回答
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 全局变量中

于 2012-08-16T17:41:04.057 回答