gpt4 book ai didi

通过非 PHP 扩展访问时,PHP Session 不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 22:09:31 26 4
gpt4 key购买 nike

我在从 HTML 页面访问 php SESSION 数据时遇到了一个奇怪的问题。我有一个基本的 login.php,我将其重定向到“page1.html”。现在我已经这样配置了 .htaccess:

AddType application/x-httpd-php5 .html .htm

另外,我知道我的 PHP 代码可以在任何给定的 HTML 页面上运行。

但是,如果我输入:

session_start();

....

if(!isset($_SESSION['username'])){
header ("Location: http://blahblahblah/Login.html");
}

在 page1.html 的正文中,if 语句总是触发(事实上,var_dump($_SESSION) 产生“array(0) { }”)。

但是,如果我采用相同的代码,将其放入“page1.php”,一切都会按预期工作(并且 var_dump($_SESSION) 会给出正确的值)。

那么,如果它的扩展名被重命名为 '.php',是不是不可能从 HTML 页面访问 $_SESSION?或者我在这里做错了什么?我宁愿将我的大部分页面保留为 '.html' 而不是 '.php,' 因为返回并更改所有文件扩展名等。

非常感谢,

最佳答案

根据您的描述,PHP 运行正常(因为 if 语句正在触发)。

一些要检查的东西:

  • 是否在 page1.html 中调用了 session_start()?必须调用它来检索 session 数据并填充 $_SESSION super 全局。
  • 是否在发送 header 之前调用了 session_start()?在发送任何 HTML 或空格之前检查 session 是否已启动,否则 session cookie 将不会与 header 一起发送。
  • Login.html 和 page1.html 是否在同一个域和同一个子域中?如果 session cookie 不可用,$_SESSION 可能为空。如果您尝试跨域使用 session ,则可能会发生这种情况。
  • 是否有 session cookie,是否正在发送?导航到 page1.html 时,使用 Firebog/Inspector 等进行检查以确保 session cookie 存在,并且它随页面请求一起传递。
  • $_SESSION 变量是如何设置的? page1.php 起作用可能只是巧合,因为当您第一次尝试访问 page1.html 时,$_SESSION 变量可能没有正确设置
  • Apache 是否有权写入 php.ini 中声明的 session.save_path
  • session.save_path 是有效路径吗?

关于通过非 PHP 扩展访问时,PHP Session 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14301094/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com