2012-11-13 7 views
-3

가능한 중복 사용하여 한 페이지에서 다른 페이지로 정보를 전달하는 방법 : 그것은 구문 오류입니다 같아요
“Warning: Headers already sent” in PHP쿠키 PHP에게

<?php 
session_start(); 

$_SESSION['page'] = "test.php"; 

echo "Page to load in iframe = ". $_SESSION['page']; 

setcookie('PagetoShow', $_SESSION); 

if(isset($_COOKIE['PagetoShow'])) 
$Page = $_COOKIE['PagetoShow']; 
echo "Page to load in iframe = ". $Page; 
else 
$Page="welcome.php" 

?> 

을,하지만 난 너무 적게 알고 또는 아무것도 PHP를 찾을 수 있습니다. 뭐가 잘못 되었 니?

답변

2
<?php 
session_start(); 

$_SESSION['page'] = "test.php"; 

좋은, 적어도 당신은 세션 키를 설정하기 전에 session_start()를 실행하는 것을 잊지 마세요.

echo "Page to load in iframe = ". $_SESSION['page']; 

setcookie('PagetoShow', $_SESSION); 

이것은 문제가됩니다. 쿠키는 헤더 필드에서 보내지 만, 이미 에코를하여 헤더를 플러시했다. 여기에 구문 오류가 있습니다

if(isset($_COOKIE['PagetoShow'])) 
$Page = $_COOKIE['PagetoShow']; 
echo "Page to load in iframe = ". $Page; 
else 
$Page="welcome.php" 

, 당신은 만약 몸 괄호를 추가해야합니다

if(isset($_COOKIE['PagetoShow'])) { 
    $Page = $_COOKIE['PagetoShow']; 
    echo "Page to load in iframe = ". $Page; 
} 

일부 문서 :

0

setcookie의 두 번째 인수는 문자열이어야합니다. 배열 ($ _SESSION)을 전달합니다. 당신은 할 수 있습니다 :

$_SESSION['page'] = "test.php"; 

setcookie('PagetoShow', $_SESSION['page']); // <-- this is the only change needed 

if(isset($_COOKIE['PagetoShow'])) 
    $Page = $_COOKIE['PagetoShow']; 
    echo "Page to load in iframe = ". $Page; 
else 
    $Page="welcome.php" 
+0

이 문자열 인 경우는 문제가되지 않습니다가, 쿠키가 아직 설정되어 볼'페이지 = Array'). 문제는 무언가가 이미 인쇄되어 있으므로 쿠키 헤더를 보낼 수 없다는 것입니다. – Lekensteyn

+0

오, 이해가가. "헤더를 보낼 수 없습니다"라는 오류를 수정했습니다. – swatkins

+0

그는 그 페이지에서 setcookie를 호출하지만 다음 페이지 요청이 있기 전까지는 쿠키를 사용할 수 없습니다. 나는 그것이 그의 혼란일지도 모른다고 생각한다. – Kyle