为什么会话变量没有存储在我的代码的 PHP 中


Why are session variables not storing in PHP for my code?

我的两个代码都有错误,其中会话变量未在页面中执行session2.php这些是错误:

注意:未定义的索引:favcolor 在 C:''xampp''htdocs''php''vehiclebazar''session2.php 在第 10 行 最喜欢的颜色是.
注意:未定义的索引:favanimal 在 C:''xampp''htdocs''php''vehiclebazar''session2.php 在第 11 行 最喜欢的动物是.

会话1.php:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html> //html type
<html>
<body>
<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>

第二页是

会话2.php:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>
</body>
</html>

这是根据您的初始/原始帖子,而不是将其标记为编辑,包括您所做的所有其他编辑。

  • https://stackoverflow.com/revisions/27758846/1

您的编辑仍然包含$_之间的引号$'_SESSION["favcolor"]


您看到这些'$'_SESSION它们不能包含引用的美元符号。

所有这些都需要一次性阅读$_SESSION,这就是您收到这些警告的原因。

阅读这个超级全球

  • http://php.net/manual/en/language.variables.superglobals.php

这些超全局变量是:

$GLOBALS$_SERVER$_GET$_POST$_FILES$_COOKIE$_SESSION$_REQUEST$_ENV

此外,在您的第一个文件中,您有

<?php//opening of php

仅此一项就会抛出错误,如果您设置了错误报告。删除//opening of php或将其放在第二行中:

<?php 
//opening of php

有问题的错误:

解析错误:语法错误、意外的"$_SESSION"(T_VARIABLE)...


在测试您的代码并修复所有这些错误后,实际上确实发布了

最喜欢的颜色是绿色。最喜欢的动物是猫。

在第二个文件中。

你应该养成一个习惯,不要让注释太接近可执行代码,尤其是开始<?php标签。

另一个session_start();//where session start它不会抛出/导致错误,但它只是令人困惑。


您还可以检查是否设置了两个会话:

if(isset($_SESSION["favcolor"]) && isset($_SESSION["favanimal"])){
    echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
    echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
}
else{
    echo "Sessions are not set.";
}

另外,由于您说您是通过本地主机执行此操作的,请确保会话/tmp 文件夹是可写的并且设置了适当的写入权限。

用:

<?php 
phpinfo();

以查看会话设置的设置。


将错误报告添加到文件顶部,这将有助于查找错误。

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

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

你应该使用 $_SESSION["favcolor"]

而不是 '$'_SESSION["favcolor"]

http://php.net/manual/en/language.variables.superglobals.php

'$'_SESSION["favcolor"] = "green";
'$'_SESSION["favanimal"] = "cat";
echo "Favorite color is " . '$'_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . '$'_SESSION["favanimal"] . ".";

在PHP中,变量应该看起来像$var,而不是'$'var。 因此,与其使用'$'_SESSION["favcolor"]'$'_SESSION["favanimal"]不如使用$_SESSION["favcolor"]$_SESSION["favanimal"].

进一步阅读 PHP 变量:http://php.net/manual/en/language.variables.basics.php