-6 php
我的两个代码都有错误,其中会话变量未在session2.php页面中执行,这些是错误:
注意:未定义的索引:第10行的C:\ xampp\htdocs\php\vehiclebazar\session2.php中的favcolor最喜欢的颜色是.
注意:未定义的索引:第11行的C:\ xampp\htdocs\php\vehiclebazar\session2.php中的favanimal最喜欢的动物是.
session1.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>
Run Code Online (Sandbox Code Playgroud)
第2页是
session2.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>
Run Code Online (Sandbox Code Playgroud)
这是根据您的初始/原始帖子而不是将其标记为编辑,包括您所做的所有其他编辑.
你的编辑仍然包含和$'_SESSION["favcolor"]之间的引用$_
你看到这些'$'_SESSION他们不能包含引用的美元符号.
所有这些都需要$_SESSION一次性阅读,这就是你得到这些警告的原因.
阅读这个超全球
这些超全局变量是:
$GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV
另外,在你的第一个文件中,你有
<?php//opening of php
Run Code Online (Sandbox Code Playgroud)
如果错误报告集,那么就会抛出错误.删除//opening of php或将其放在第二行:
<?php
//opening of php
Run Code Online (Sandbox Code Playgroud)
有问题的错误:
解析错误:语法错误,意外'$ _SESSION'(T_VARIABLE)......
在测试代码并修复所有这些错误之后,确实发布了
Favorite color is green. Favorite animal is cat.
在第二个文件中.
你应该习惯不要让评论如此接近可执行代码,尤其是开始<?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.";
}
Run Code Online (Sandbox Code Playgroud)
另外,既然你说你是通过localhost这样做的,那么确保sessions/tmp文件夹是可写的并且设置了正确的写权限.
使用:
<?php
phpinfo();
Run Code Online (Sandbox Code Playgroud)
在单独的文件中查看您的会话设置设置为什么.
将错误报告添加到文件的顶部,这将有助于查找错误.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
Run Code Online (Sandbox Code Playgroud)
旁注:错误报告应该只在暂存中完成,而不是生产.