2013-06-11 3 views
0

Следующий скрипт работает под окнами XAMPP, PHP 5.3.8PHP переменная сеансы в другой среде не будет работать

session_start(); 
    if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) { 
     $myvar = "some_value"; 
    } elseif (!empty($_GET['myvar'])) { 
     $_SESSION['myvar'] = $_GET['myvar']; 
    } 
    $_SESSION['myvar'] = $myvar; 

но на Ubuntu Server, PHP 5.3.10, если я var_dump($myvar) значение null

+2

Ну, если 'myvar' уже установлен в сеансе, а не в параметрах url, что _should_ значение будет? –

ответ

1

Рассматривали ли вы, вы можете быть определяющим переменную сеанса дважды, перезаписывания первым определен в ваше заявление if? ! Кроме того, если вы запустите следующий код в порожнем ($ _ GET [ «MyVar»]) верно:

session_start(); 
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) { 
    $myvar = "some_value"; 
} elseif (!empty($_GET['myvar'])) { 
    $_SESSION['myvar'] = $_GET['myvar']; 
} 
$_SESSION['myvar'] = $myvar; 

Вы бы наиболее likley получить неопределенную переменную предупреждение, потому что вы не установив $ MyVar. Попробуйте следующее:

session_start(); 
if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) { 
    $myvar = "some_value"; 
    $_SESSION['myvar'] = $myvar; 
} elseif (!empty($_GET['myvar'])) { 
    $_SESSION['myvar'] = $_GET['myvar']; 
} 
+0

Спасибо за отзывы и исправления, но я все еще не могу получить значение $ myvar как var_dump ($ myvar). – fefe

0

Вы добавляете значение $myvar, если сеанс или параметр get пуст. В противном случае оно равно null. Как об этом:

session_start(); 
$my_var = isset($_SESSION['my_var'] ? $_SESSION['my_var'] : 'default_value'; 
if(empty($_SESSION['myvar']) && empty($_GET['myvar'])){ 
    $myvar = 'some_value'; 
} elseif(!empty($_GET['my_var'))) { 
    $myvar = $_GET['myvar']; 
} 
$_SESSION['my_var'] = $myvar; 

Или просто:

session_start(); 
$_SESSION['my_var'] = isset($_GET['my_var']) ? $_GET['my_var'] : (isset($_SESSION['my_var']) ? $_SESSION['my_var'] : 'default_value'); 
0
empty($_SESSION['myvar']) && empty($_GET['myvar']) 

Это ложь за все время. Becase на кулак времени $ _SESSION [ «MYVAR»] пуст, и $ _GET [ «MyVar»] не пусто:

$_SESSION['myvar'] = $myvar; // now $myvar is empty 



if (empty($_SESSION['myvar']) && empty($_GET['myvar'])) { 
     $_SESSION['myvar'] = "some_value"; 
    } elseif (!empty($_GET['myvar'])) { 
     $_SESSION['myvar'] = $_GET['myvar']; 
    }