PHP:$_SESSION 变量未传递到下一个网页
Posted
技术标签:
【中文标题】PHP:$_SESSION 变量未传递到下一个网页【英文标题】:PHP: $_SESSION variables not passing to the next webpage 【发布时间】:2012-11-26 17:34:57 【问题描述】:我在尝试将我的用户名变量从登录页面传递到下一个“欢迎”页面时遇到问题。我使用我的大学服务器托管网页,因此可以访问 public_html 文件夹中的网页文件。
在 login.php 页面上进行测试时,我能够打印会话中保存的用户名,但是当我在成员页面中尝试相同的操作时,它不会打印会话数组中保存的用户名?我检查了所有其他帖子,但似乎没有解决方案。
Login.php
<?php
session_start();
include ('connect.php');
$userName=$_POST['username'];
$password=$_POST['password'];
$result = mysql_query("SELECT * FROM users WHERE username='$userName' AND password='$password'") or die ('Query is invalid: ' . mysql_error());;
$count = mysql_num_rows($result);
if($count==1)
$_SESSION['username']=$userName;
header("Location: memberPage.php");
else
echo "Incorrect username or password";
?>
memberLogin.php
<?php
session_start();
include ('connection.php');
$_SESSION['username'] = $userName;
echo $userName;
//$result = mysql_query("SELECT * FROM users");
//while ($row = mysql_fetch_array($result))
// echo $row['username'];
//
?>
<html>
<link rel="stylesheet" type="text/css" href="style.css" />
<div id = main-nav>
<a href="http://www.cs.nott.ac.uk/~rxp00u/logout.php" >Logout</a>
</div>
</html>
附:我意识到我的代码不是很安全,我将在网站的基本框架正常工作后继续努力!
编辑:login.php 上的错误报告显示以下错误: “警告:未知:打开(/var/lib/php5/sess_d760m9ebgose4liptp6jbgbc17nqjgg4,O_RDWR)失败:第 0 行未知中的权限被拒绝(13)警告:未知:无法写入会话数据(文件)。请验证当前设置session.save_path 在 Unknown on line 0 中是正确的 (/var/lib/php5)"
【问题讨论】:
【参考方案1】:<?php
session_start();
include ('connection.php');
$_SESSION['username'] = $userName;
echo $userName;
$userName 未设置。如果你有错误,你会看到的。你是说
$userName = $_SESSION['username'];
echo $userName;
?
【讨论】:
谢谢,我试过了,但是仍然没有输出登录的用户名 尝试用元刷新echo '<meta http-equiv="refresh" content="0;URL=memberPage.php">';
替换 header("Location: memberPage.php");
- 这是 cookie 的事情
谢谢,将我重定向回 memberPage,但 memberPage.php 上仍然没有显示任何内容
嗨,打开错误后,我发现在将会话写入文件时出现错误。我在我大学的服务器上,所以 web 文件在 public_html 文件夹中,所以不确定 php 文件将保存在哪里?这是在我的 login.php 文件中输出的错误:“警告:未知:open(/var/lib/php5/sess_d760m9ebgose4liptp6jbgbc17nqjgg4, O_RDWR) failed: Permission denied (13) in Unknown on line 0 Warning: Unknown: Failed to写入会话数据(文件)。请在 Unknown on line 0 中验证 session.save_path 的当前设置是否正确(/var/lib/php5)
现在可以创建自己的会话目录并使用它php.net/manual/en/function.session-save-path.php【参考方案2】:
在 memberLogin.php 您正在设置:
$_SESSION['username'] = $userName;
其中$userName
未定义。看来,如果您可以成功地将$userName
分配给Login.php 上的$_SESSION
变量,则不再需要设置该变量。拨打session_start();
即可访问。
【讨论】:
如果我不需要再次设置变量,我将如何访问 memberPage.php 中的 $userName?$userName = $_SESSION['username'];
【参考方案3】:
在memberLogin中,应该是:
$username = $_SESSION['username'];
赋值是左关联的,这意味着=
右侧的值被分配给=
左侧的变量。您当前的设置让您用 null 覆盖您的会话值。
【讨论】:
谢谢我试过了,但没有任何会话用户名的输出 做一些基本的调试来缩小问题范围:你是否打开了错误报告?您是否尝试过在 phpMyAdmin 中运行查询?你可以在 login.php 中 var_dump$username
吗? login.php中赋值后可以var_dump $_SESSION['username']
吗?
我打开了报错,在尝试写入会话数据时发现了错误。我目前在我大学的机器上,因此访问我的网络文件将保存在我的 public_html 文件夹中。错误如下:“警告:未知:打开(/var/lib/php5/sess_d760m9ebgose4liptp6jbgbc17nqjgg4,O_RDWR)失败:第0行未知中的权限被拒绝(13)警告:未知:无法写入会话数据(文件)。请验证 session.save_path 的当前设置是否正确 (/var/lib/php5) 在 Unknown on line 0"
啊,那是你的问题。使用这些详细信息编辑您的问题。请务必提及您在大学服务器上。这是相关的。以上是关于PHP:$_SESSION 变量未传递到下一个网页的主要内容,如果未能解决你的问题,请参考以下文章