2009-10-22 3 views
2
<? 
session_start(); 
$id = $_SESSION['id']; 
$email = $_COOKIE['email']; 
$password = $_COOKIE['password']; 
header('Location: ../'); 
// I tell it to redirect... 
$cookie_expires = time() + 60*60*24; 
$cookie_path = '/'; 
$cookie_name = 'temporary'; 
$cookie_value = 'Your account was deleted.'; 
setcookie($cookie_name, $cookie_value, $cookie_expires, $cookie_path); 
// ...but the cookie is set! 
?> 
<!-- Why? --> 
+1

질문을 명확히하십시오. 어떤 쿠키가 설정되어 있으며, 왜 그렇게 기대하지 않습니까? –

+0

차이점은 무엇입니까? 반환, 종료 및 종료? –

+0

@Delirium tremens : 차이점은 없습니다. die에 대한 문서도'die - exit() '와 같습니다. – Powerlord

답변

10

Location: 헤더를 설정 한 후에도 스크립트 실행이 계속됩니다 (또는 header()에 대한 다른 호출). header()을 호출 한 직후에 스크립트의 나머지 부분을 실행하지 않고 즉시 리디렉션을 수행하려면 return; 또는 die;을 입력하십시오.

+0

+1 그리고 리디렉션 헤더를 보내기 전에 쿠키를 설정합니다. – rmontagud

2

쿠키는 헤더의 일부로 보내집니다. 전체 헤더가 평가되고 (쿠키 설정 포함) 브라우저가 재 지정됩니다.

0

오류보고가 해제되어 있으면 구문 오류와 함께 도움이되며 개발자 환경에서 항상 가치가 있습니다.

ini_set('display_errors',1); 
error_reporting(E_ALL & ~E_NOTICE); 

편집 :이 이중 세미콜론 구문 오류는하지만 당신은 또한 당신의 헤더 또는 스크립트 실행 후 exit()를 호출 할 필요가

은 멈추지 않을 것입니다 및 쿠키 것

수정 된 것으로 보인다

2

이를 세테 시도 할 수 : (당신의 헤더를 포함)

header('Location: ../'); 
exit(); 

페이지 만 ('모든'당신의 PHP가 실행 된 후 전송됩니다 당신이 t 않는 die() 또는 exit())로 멈추도록하십시오.

관련 문제