未定义的变量:php中的_SESSION?

时间:2017-03-06 00:47:34

标签: php session cookies

我必须使用php文件并希望通过使用session将$ _lang发送到其他页面,无论我在两个文件中使用session_start()还是仅在第一个文件中无法发送$ _lang。如果我使用cookie

,我也有同样的问题

js file:

$(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"];
        ...

3 个答案:

答案 0 :(得分:0)

不要使用$ _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");

?>

答案 1 :(得分:0)

session_start()添加到第二个文件。由于您要重定向浏览器,因此您有一个新请求,如果没有session_start(),则$_SESSION对象将无法使用。

<?php
 session_start();   <-- Add this

 include ('db.php');

 $_lang=$_SESSION['lang'];

...

答案 2 :(得分:0)

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

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