当前位置: 首页 > 知识库问答 >
问题:

PHP会话开始,但不保留值

桓兴腾
2023-03-14

我有以下代码:

<?php
ini_set('display_errors', 'On');error_reporting(E_ALL | E_STRICT);
session_start();
set_include_path('../include');
if(isset($_GET["lang"])
    && $_GET["lang"] != $_SESSION["lang"]
    && ($_GET["lang"] == 'en' || $_GET["lang"] =='pt')){
$_SESSION["lang"]= $_GET["lang"];
setcookie("lang", $_GET["lang"]);
}
if(!isset($_SESSION["lang"])){
    if(isset($_COOKIE["lang"])){
    echo $_SESSION["lang"] == $_COOKIE["lang"];
    } else {
        switch(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)){
        case 'pt': $_SESSION["lang"] = "pt";setcookie("lang", $_SESSION["lang"]); break;
        default: $_SESSION["lang"] = "en";setcookie("lang", $_SESSION["lang"]);
        }

    }
}
print_r($_SESSION);print_r($_GET);print_r($_COOKIE);
require('lang/'.$_SESSION["lang"].'.php');
?>

但是由于某种原因,$_SESSION变量不保留值。输出如下:

注意:未定义的索引:lang in/home/claudio/public_html/index。第13行的php数组()数组([get]=

警告:需要(lang/. php):打开流失败:第23行的 /home/claudio/public_html/index.php中没有这样的文件或目录

致命错误:require():无法打开所需的“lang/”。php'(include_path='../include')在/home/claudio/public_html/index中。php第23行

如果我做echosession_start();它返回1,那么会话的问题是什么?

共有1个答案

云育
2023-03-14

如果没有设置$_GET["lang"]和$_SESSION["lang"]并且设置了$_COOKIE["lang"],则执行的唯一操作将是:

echo $_SESSION["lang"] == $_COOKIE["lang"]; //maybe this should be a '='?

如果不是这样,也许您应该检查 /var/php_sessions中的会话保存路径是否可由Web服务器写入。

 类似资料:
  • 问题内容: 在我的PHP代码中,如果一个会话已经开始,而我尝试启动一个新会话,则会收到以下通知: 注意:会话已经开始-忽略session_start() 如何避免这种情况? 问题答案: 尝试

  • 我正在构建一个反向代理服务器,它将授权http请求并将其传递给一些内部API。 我根据DB中的条目授权传入请求。 这个项目中的性能是优先的——反向代理服务器不应该增加太多响应时间。 简而言之: 我正在使用来查询数据库。我在Spring配置中的init期间打开Hibernate会话: 然后我将会话注入DAO层,并在read方法中使用它: 正如您所看到的,我并不是在每次DAO调用中都关闭/打开会话。我

  • 问题内容: 我有一个使用AJAX加载新php文件并更新显示的单页网站。 我从主页开始php会话,但是当我使用ajax更新内部html时,我需要这些会话变量来加载新的php文件。 这篇文章与此类似:PHP会话变量未保留。但是我检查了一下,我的php.ini有 主页PHP: 在用户输入之后,我使用ajax调用php文件并加载页面的一个小节: 有人可以告诉我我缺少哪些重要步骤吗?谢谢。 更新: 在主页和

  • 我有一个一页的网站,使用AJAX加载新的php文件和更新显示。 UPDATE:在将session_id()调用添加到主页面和子页面之后,我看到两个页面都有相同的session_id。然而,它仍然不能拉出会话变量,如果我给它赋值,两个同名会话变量将保持相互独立。 这个问题产生的问题的答案:我发现我必须在php.ini文件中设置一个静态session_save路径。对于大多数付费的webhosting

  • 问题内容: 我不确定这是否可能。 我的“活动”网站正在处理注册并将其保存到我们的数据库中,但是我们的主站点负责处理信用卡处理。通过在主网站上处理当前的购买,会话可用于将数据传递到付款/抄送屏幕。 不必更改我的付款代码(例如接受$ _GET参数),我的变量是否应该传递过来? 例: 我的页面在上面查找地址会话变量。 问题答案: 跨域会话ID 默认情况下,使用cookie传递会话ID。由于您的网站位于不

  • 问题内容: 如果我有一个用户登录到我的网站,并将其ID存储在中,则从他的浏览器中单击“保存”按钮,这将向服务器发出AJAX请求。他和cookie是否会保留在此请求中,我是否可以安全地依赖出现在ID中的ID ? 问题答案: 答案是肯定的: 会话在服务器端维护。就服务器而言,AJAX请求和常规页面请求之间没有区别。它们都是HTTP请求,并且都以相同的方式在标头中包含cookie信息。 无论是常规请求还