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

时间:2014-12-07 03:51:25

标签: php

这是我设置变量

的方法
<?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"];
?>

1 个答案:

答案 0 :(得分:4)

  

确保您拥有session_start();在所有这些页面上 - Ghost

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

  

将用户名设置为1,其他人以某种方式丢失

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

我准备打赌,如果你改变

$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">

error reporting添加到文件的顶部,如果您的系统设置未自动设置,则有助于查找错误,而这很可能是“未定义的索引...”。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告应仅在暂存时完成,而不是生产。


现在,如果仍然无效,那么你就会遇到缓存问题。

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

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


修改

按照此操作,它将工作,测试。然后你可以在之后修改它。

第一页:

<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>

<强>使page2.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>";
?>