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

Do a session_destroy(); 다시 시도하십시오 – dotoree

답변

4

그것은이 라인은 여기 : 당신이 그것을 할당하기 전에 $ 아이디이 정의되지

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

경우, 정의되지 않은 키를 1로 설정하면하려면 $ ID를 확인하는 간단한 방법이 필요합니다 이은 다음과 같습니다

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

이 :-) 트릭을 할해야

+0

고마워, 지금 문제가 해결되었습니다 :) – TPSstar

+0

하지만'$ _GET [ "id"]'가 설정되어 있지 않으면 다른 페이지로 리다이렉트해야하므로 문제가 없어야합니다. –

+0

@Shredder - PHP는 헤더에 관계없이 문서를 계속 처리합니다. Location 헤더를 따르기로 결정한 것은 클라이언트입니다. 그래서 좋은 지적! exit(); 명령 : 귀하의 위치 헤더를 출력 후 : – oodavid