2017-03-06 143 views
-1

我必須php文件,並希望通過使用會話將$ _lang發送到其他頁面,無論是在兩個文件中使用session_start()還是僅在第一個文件中使用$ _lang都不能發送。我有同樣的問題,如果我使用的cookie未定義的變量:_SESSION在php中?

js文件:

​​

第一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"]; 
     ... 

回答

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"); 

?> 
+0

我試過了,還是一樣的錯誤。 –

+0

如果你只有一個最小文件(session_start()和print_r($ _ SESSION)),你會得到同樣的錯誤嗎? – Scovetta

+0

@scovetta我添加了第二個文件的print_r($ SESSION))和我有 陣列([郎鹹平] =>我們) 陣列可用,但我不知道爲什麼這部分不工作 $ _lang = $ _ SESSION [ '郎']; –

0

添加session_start()到第二個文件。由於您正在重定向瀏覽器,因此您有新的請求,並且沒有session_start(),則$_SESSION對象將不可用。

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

include ('db.php'); 

$_lang=$_SESSION['lang']; 

... 
+0

它的工作!謝謝 –