2011-12-30 3 views
0
<?php session_start();?> 

<?php 
    !isset($_GET["id"]) ? header("Location: store.php") : $id = $_GET['id']; 
?> 

<?php 
    $_SESSION["items"][$id] = 1; 
    print_r($_SESSION); 
?> 

Это выводит

Array 
    (
     [items] => Array 
      (
       [1] => 1 
       [] => 1 
       [2] => 1 
       [3] => 1 
      ) 
    ) 

Там всегда появляется один ключ пустой. Почему этот ключ пуст.

+1

Попробуйте очистить вне сессии в вашем браузере и проверить его снова. – Virendra

+1

Можете ли вы добавить вывод 'print_r ($ _ GET)' к вашему вопросу? – rdlowrey

+0

Сделайте session_destroy(); и попробуйте еще раз – dotoree

ответ

4

Именно эта линия здесь:

$_SESSION["items"][$id] = 1; 

если $ ID не определен, то неопределенная ключ установлен в 1, то необходимо проверить $ идентификатор, прежде чем назначить его, простой способ сделать это было бы:

if(isset($id)){ 
    $_SESSION["items"][$id] = 1; 
} 

Если сделать трюк :-)

+0

Спасибо, теперь проблема решена :) – TPSstar

+0

Но если '$ _GET [" id "]' не установлен, он должен перенаправляться на другую страницу, поэтому у него не должно быть этой проблемы. –

+0

@Shredder - PHP будет обрабатывать документ независимо от заголовков, это клиент, который решает следовать за заголовком Location. Так хорошо! Не забудьте добавить exit(); после вывода заголовка вашего местоположения :-) – oodavid

Смежные вопросы