并非所有 PHP 会话变量都设置


Not all PHP session variables being set

这就是我设置变量的方法

<?PHP
session_start();
?>
<?PHP
$user_name = $_POST['username'];
$first_name = $_POST['FirstName'];
$last_name = $_POST['LastName'];
$_SESSION['FirstName']=$first_name;
$_SESSION['LastName']=$last_name;
$_SESSION['UserName']=$user_name;

出于测试目的,我在设置 Session 变量之前在此文件中打印出来,以便我知道我正在从表单中获取值。但是当我去打印出另一个这样的内容时

<?PHP
echo $_SESSION['UserName'];
echo $_SESSION['FirstName'];
echo $_SESSION['LastName'];

崩溃了,在注释掉一些打印后,我发现它只是设置了一个用户名,而其他的不知何故丢失了

这是来自我的表格 登录 用户名:  密码: 

这是我提交时去的地方

$user_name = $_POST["username"];
$password = $_POST["password"];
$_SESSION["UserName"]=$user_name;
$_SESSION["Password"]=$password;

这些是我然后尝试打印出来的地方

<?PHP
echo "username: "
echo $_SESSION["UserName"]; //this one works
?>
<br>
<?PHP
echo "password: "
echo $_SESSION["Password"]; //does not work
?>

我的会话变量仅在一个页面的顶部声明,如下所示

<?PHP
session_start();
$_SESSION["UserName"];
$_SESSION["Password"];
?>

只要确保你有session_start();在所有这些页面上 - 幽灵

除了Ghost的评论之外,可能是表单的元素不包含name属性,和/或有拼写错误,或者字母大小写不匹配。
UsernameusernameUsername不一样。 (PHP( 变量区分大小写。

正在设置用户名一个,而其他用户名不知何故丢失

为了详细说明我的评论,我怀疑您的表单元素都是小写的或没有命名。

我准备打赌,如果你改变

$first_name = $_POST['FirstName']; // FirstName is not the same as firstname
$last_name = $_POST['LastName']; // LastName is not the same as lastname

$first_name = $_POST['firstname'];
$last_name = $_POST['lastname'];

它将开始为您工作。因为,这两个人没有通过。

但是,为了100%确定,您需要发布表单的代码,但几乎可以确定我的答案。

您的表单应同时包含:

<input type="text" name="firstname">

<input type="text" name="lastname">

将错误报告添加到文件顶部,这将有助于查找错误,如果您的系统设置未自动设置为这样做,这反过来很可能是"未定义的索引..."。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:错误报告只应在暂存中完成,而不应在生产环境中完成。


现在,如果这仍然不起作用,那么您遇到了缓存问题。

您可以使用 session_destroy() .您也可以取消设置会话,然后重新开始。

有关这些内容的更多信息,请访问:

  • http://php.net/manual/en/function.session-destroy.php

    销毁注册到会话的所有数据

  • http://php.net/manual/en/function.session-unset.php

    释放所有会话变量


编辑:

遵循这个,它将工作,经过测试。然后,您可以稍后对其进行修改。

第一页:

<html>
<body>
<form action="page2.php" method="post">
Username: <br><input type="text" name="username"><br>
First name: <br><input type="text" name="firstname"><br>
Last name: <br><input type="text" name="lastname"><br>
<input type="submit" name = 'submit' value= 'Login'>
</form>
</body>
</html>

页2.php

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
session_start();
$username = $_POST['username'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$_SESSION['username'] = $_POST['username'];
$_SESSION['firstname'] = $_POST['firstname'];
$_SESSION['lastname'] = $_POST['lastname'];
echo "Username: " . $_SESSION['username'] . "<br>";
echo "First name: " . $_SESSION['firstname'] . "<br>";
echo "Last name: " . $_SESSION['lastname'] . "<br>";
?>