使用会话将登录详细信息传递到另一个页面PHP
我需要另一个页面中的登录详细信息以从数据库中检索数据。基本上,我需要显示可编辑的表格以及登录用户的详细信息。我尝试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'];
}
?>
首先请确保您将session_start()
放置在您使用它的任何脚本的开头。在您之前可能没有输出到浏览器请致电session_start()
,并在开始<?php
标记之前包含空格或换行符。
所以:
<?php
session_start();
...
第二,确保你重定向后终止你的脚本,例如:
header("location:edit_user.php");
exit();
这可以确保重定向后,没有代码被执行,因此,会议赢得不会发生未设置或会话变量偶然更改。
session_register()
是一个过时的功能。只需使用$_SESSION["bar"] = "foo"
来存储一些东西。
以供将来参考,请在提问时张贴部分代码。它可以帮助每个人在更具体的情况下给你一个答案。
<?php
session_start();
if(!isset($_SESSION['Foo']))
{
$_SESSION['Foo'] = "Bar";
}
?>
我已经添加了我的代码,你能看到什么是错误? – Maggi 2012-08-17 09:14:48
您可以从数据库中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全局变量中通过会话
你能告诉我们这两个页面的会话相关代码(应该是每个文件的前几行......)吗? – jeroen 2012-08-16 16:59:08
@jeroen我已经添加了我的代码! – Maggi 2012-08-17 09:09:40
上面的代码起作用了!我犯了语法错误..我在所有页面中添加了session_start()。我删除了session_register(),并使用$ _SESSION存储整个会话所需的内容。感谢帮助我理解! – Maggi 2012-08-17 14:28:17