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 '&lt;meta http-equiv="refresh" content="0;URL=memberPage.php"&gt;'; 替换 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 变量未传递到下一个网页的主要内容,如果未能解决你的问题,请参考以下文章

将Array从JS传递给PHP并创建SESSION变量

Webform_状态保持

php把值传入到下一个跳转的页面用那种方法

php参数传递的常用方法详解

“未定义变量:_SESSION”VS。 “会话已经开始”

PHP 为啥 $_SESSION 变量拒绝在浏览器关闭时取消设置?