我需要另一个页面中的登录详细信息才能从数据库中检索数据。基本上,我需要显示可编辑的表单,其中包含登录用户的详细信息。我尝试session_register()
将用户名存储在登录.php页面中。但是由于某种原因,我无法在编辑.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'];
}
?>
首先,
确保将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";
}
?>
来源 : http://php.net/manual/en/features.sessions.php
你可以像这样从数据库中检索数据
//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 array具有用户详细信息,您可以指向该详细信息以形成文本字段值。
$_session['user_id']=$login_data['user_id'] 值必须更早分配,该值在整个会话中都保留在 $_SESSION 全局变量中