2012-08-16 73 views
1

我需要另一个页面中的登录详细信息以从数据库中检索数据。基本上,我需要显示可编辑的表格以及登录用户的详细信息。我尝试session_register()用于在login.php页面中存储用户名。但由于某种原因,我无法在我的edit.php页面中使用$_SESSION[]显示用户名。我在功能session_start()之后也是这样做的。使用会话将登录详细信息传递到另一个页面PHP

我是新来的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']; 
    } 
    ?> 
+0

你能告诉我们这两个页面的会话相关代码(应该是每个文件的前几行......)吗? – jeroen 2012-08-16 16:59:08

+1

@jeroen我已经添加了我的代码! – Maggi 2012-08-17 09:09:40

+1

上面的代码起作用了!我犯了语法错误..我在所有页面中添加了session_start()。我删除了session_register(),并使用$ _SESSION存储整个会话所需的内容。感谢帮助我理解! – Maggi 2012-08-17 14:28:17

回答

2

首先请确保您将session_start()放置在您使用它的任何脚本的开头。在您之前可能没有输出到浏览器请致电session_start(),并在开始<?php标记之前包含空格或换行符。

所以:

<?php 
session_start(); 
... 

第二,确保你重定向后终止你的脚本,例如:

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

这可以确保重定向后,没有代码被执行,因此,会议赢得不会发生未设置或会话变量偶然更改。

1

session_register()是一个过时的功能。只需使用$_SESSION["bar"] = "foo"来存储一些东西。

1

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

<?php 
session_start(); 

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

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

+0

我已经添加了我的代码,你能看到什么是错误? – Maggi 2012-08-17 09:14:48

0

您可以从数据库中retrive数据这样

//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全局变量中通过会话

+0

我需要存储$ _SESSION ['xyz'] = $ userName其中$ userName = $ _ POST ['username']。我的语法错了吗? – Maggi 2012-08-17 09:17:29

+0

您可以直接指定$ _SESSION ['xyz'] = $ _ POST ['username']但为此您需要表单中的用户名数据字段。验证用户登录后,您可以在用户登录时获取该数据。 – Pramodh 2012-08-17 18:30:40

相关问题