【问题标题】:Undefined variable: _SESSION in php?未定义的变量:php中的_SESSION?
【发布时间】:2017-07-25 18:00:00
【问题描述】:

我必须 php 文件并希望通过使用会话将 $_lang 发送到另一个页面,无论我在两个文件中使用 session_start() 还是仅在第一个文件中都无法发送 $_lang。如果我使用 cookie,我也会遇到同样的问题

js文件:

$(document).ready(function(){
cat();
function cat(){
    $.ajax({
        url:    "action.php",
        method: "POST",
        data:     {menu:1},
        success: function(data){
            $("#get_menu").html(data);

        }
    })
}

});

第一个 php 文件:

<?php
session_start();

//get current url
$goback=$_SERVER['HTTP_REFERER'];
$GLOBALS['_lang']=$_GET['lang'];
$_SESSION['lang']=$_lang;
echo $_SESSION['lang'];

//go to current url
header("location:$goback");


?>

这是第二个文件的代码。

 <?php

 include ('db.php');

 $_lang=$_SESSION['lang'];


 //$_lang= 'us';
 if(isset($_POST["menu"])){
//function display_menu(){

$category_query="SELECT * FROM menu WHERE parent_id=0";
$run_query=mysqli_query($con,$category_query);

if(mysqli_num_rows($run_query)>0){
    while($row=mysqli_fetch_array($run_query)){
        $menu_id=$row["menu_id"];
        $menu_name=$row[$_lang];
        $menu_icon=$row["icon"];
        ...

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    我遇到了这个问题,尝试了不同的方法,终于找到了解决方案:

    PHP 区分大小写,在所有 php 文件中使用 $_SESSION 而不是 $_session。当然可以。

    【讨论】:

      【解决方案2】:

      session_start() 添加到第二个文件。由于您正在重定向浏览器,因此您有一个新请求,并且没有session_start()$_SESSION 对象将不可用。

      <?php
       session_start();   <-- Add this
      
       include ('db.php');
      
       $_lang=$_SESSION['lang'];
      
      ...
      

      【讨论】:

        【解决方案3】:

        不要使用 $_GLOBALS ...

        试试这个..

        <?php
        session_start();
        
        //get current url
        $goback=$_SERVER['HTTP_REFERER'];
        $_SESSION['lang']=$_GET['lang'];
        echo $_SESSION['lang'];
        
        //go to current url
        header("location:$goback");
        
        ?>
        

        【讨论】:

        • 如果你只有一个最小的文件(session_start() 然后是 print_r($_SESSION)),你会得到同样的错误吗?
        • @scovetta 我在第二个文件中添加了 print_r($SESSION)) 并且我得到了 Array ( [lang] => us ) 数组可用但我不知道为什么这部分不起作用$_lang=$_SESSION['lang'];
        猜你喜欢
        • 2012-03-27
        • 2014-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 1970-01-01
        • 2014-07-11
        相关资源
        最近更新 更多