헤더의 태그를 사용하여 페이지를 리디렉션하고 싶지만 작동하지 않습니다.페이지를 리디렉션하는 PHP의 헤더
답변
당신이 필요합니다
header('Location: http://google.com');
머리글 전에 약간의 PHP 출력을 가지고 있기 때문에 그것은 작동하지 않을 수는 헤더 기능을하기 전에 출력 빈 공간이나 문자 또는 에코가 없는지 확인합니다. 일반적으로 오류가 발생하고 "index.php의 1 행 페이지에서 이미 전송 된 헤더"와 같은 여분의 공간이있는 곳을 찾을 수 있습니다.
"headers already sent"오류가 발생하는 가장 일반적인 이유입니다. 따라서 해결해야 할 두 가지 문제가 있습니다.
질문에 오류 메시지 텍스트가 없기 때문에이 텍스트가 없다고 생각할 수 있습니다. 그러나 프로그래머는 발생한 모든 오류 메시지를 볼 필요가 있습니다. 개발자 환경이나 제품의 피크 로그에서
display_errors
설정을on
으로 설정해야합니다. 또한error_reporting()
레벨을 E_ALL로 설정해야합니다.응용 디자인. 응용 프로그램은 비즈니스 로직과 프리젠 테이션 로직의 두 부분으로 나누어 져야합니다. 첫 번째는 사용자, 데이터베이스 등에서 데이터를 가져 오는 것입니다. 늦은 사람은 수집 된 데이터를 표시합니다. 프리젠 테이션 로직 부분이 실행되기 전에 브라우저에 단일 바이트를 보내지 않아야합니다. 이 경우 오류가 발생하지 않습니다.
하나의 예외는 BOM - Byte Order Mark이며 일부 편집자가 자동으로 파일에 넣는 기호입니다. 그냥 "BOM없이 저장"기능을 사용하십시오. 페이지의 상단에
추가 (모든 HTML이나 PHP 전) 다음
<?php
header('Location: http://stackoverflow.com/users/300204/zaf');
exit();
?>
그 리디렉션 경우에 당신은 당신이하지 않은 것을 확인해야합니다 (멋진 프로그래머의 홈페이지에) 이 header() 함수를 사용하기 전에 내용을 출력하십시오. header() 함수는 ANY 내용이 사용자에게 전송되기 전에 호출되어야합니다.
일부 지적했듯이 콘텐츠 전에 헤더를 출력해야합니다. 이것을 수행하는 이상적인 방법은 비즈니스 로직과 프리젠 테이션 로직을 서로 다른 부분으로 분리하는 것입니다.하지만 이렇게하지 않는 레거시 코드가 붙어있는 경우가 있습니다.
이 경우 PHP의 output control 함수가 유용 할 수 있습니다. ob_start() 및 ob_end_flush()를 사용하여 출력을 캡처 한 다음 끝에 출력하십시오. 이렇게하면 코드에서 header()를 어느 정도 사용할 수 있습니다 (예 :
<?php
function doSomeStuff() {
echo 'look, outputting stuff here';
header('Location: /');
}
doSomeStuff();
?>
위의 코드는 이미 전송 된 헤더에 대한 오류를 표시하지만 다음 코드가 작동합니다. 이 경우
<?php
function doSomeStuff() {
echo 'look, outputting stuff here';
header('Location: /');
}
ob_start();
doSomeStuff();
ob_end_flush();
?>
는 에코의 출력()()은 ob_end_flush까지 전송되지 않으므로 헤더() 호출은 올바르게 작동한다. 이 접근법은 비즈니스 로직과 프리젠 테이션 로직을 적절하게 분리하지 않는 레거시 코드를 래핑하는 데 사용될 수 있습니다.
- 1. 페이지를 리디렉션하는 것이 좋습니다.
- 2. 페이지를 리디렉션하는 방법
- 3. PHP의 헤더()를 이해하려면
- 4. 팝업을 닫고 페이지를 리디렉션하는 방법
- 5. PHP의 "Transfer-Encoding : chunked"헤더
- 6. 원격 서버의 페이지를 PHP의 다른 서버로 리디렉션
- 7. asp.net mvc에서 오류 페이지를 리디렉션하는 방법
- 8. iframe을 끊고 Jquery로 페이지를 리디렉션하는 방법
- 9. 두 페이지를 리디렉션하는 방식에 어떤 문제가 있습니까?
- 10. JavaScript를 사용하여 페이지를 리디렉션하는 방법은 무엇입니까?
- 11. Drupal : 노드 목록 페이지를 제거/리디렉션하는 방법
- 12. 매개 변수가있는 페이지를 리디렉션하는 방법은 무엇입니까?
- 13. JavaScript가 원인 인 헤더 정보를 수정할 수 없습니다. PHP의 오류
- 14. 동적 페이지를 캐시하는 데 필요한 HTTP 헤더
- 15. PHP에서 현재 페이지로 리디렉션하는 방법은 무엇입니까?
- 16. 이동 통신사를 기반으로 모바일 웹 페이지를 리디렉션하는 방법은 무엇입니까?
- 17. flex 응용 프로그램에서 웹 페이지를 리디렉션하는 방법은 무엇입니까?
- 18. 한 도메인에서 다른 도메인으로 웹 페이지를 리디렉션하는 방법은 무엇입니까?
- 19. 응답에서 얻은 특정 URL로 페이지를 리디렉션하는 방법 [아약스 요청 보내기]
- 20. 모델 - 뷰 - 발표자 패턴을 사용하여 페이지를 리디렉션하는 가장 올바른 방법
- 21. 상위 페이지를 Sitecore 6의 하위 페이지로 리디렉션하는 방법은 무엇입니까?
- 22. ASP.NET MVC 3에서보기에서 컨트롤러로 페이지를 리디렉션하는 방법은 무엇입니까?
- 23. 폴더의 모든 페이지를 루트 수준의 페이지로 리디렉션하는 데 문제가 있습니다.
- 24. CakePHP에서 페이지를 301 리디렉션하는 가장 좋은 방법은 무엇입니까?
- 25. header() 명령을 사용하는 대신 PHP에서 페이지를 리디렉션하는 방법은 무엇입니까?
- 26. ASP 페이지를 다른 두 페이지로 리디렉션하는 방법은 무엇입니까?
- 27. 헤더 정보를 수정할 수 없습니다 PHP의 경고 메시지?
- 28. http를 https로 리디렉션하는 방법
- 29. HTML/PHP의 '이전'버튼
- 30. PHP의 인증 뒤에 웹 사이트에서 페이지를 대량 가져 오는 방법
아래의 해결 방법이 효과가있는 경우 답변으로 선택하십시오. 그렇지 않으면 작동하지 않는 코드의 일부를 포함 시키십시오. 도움이 될 것입니다. – zapping
귀하의 질문은 구체적이고 구체적이며 명확하게 작성되도록 SO 요구 사항을 충족시키지 못합니다.'헤더 태그 사용 '- 정확히 "태그"는 무엇을 사용 했습니까? '작동하지 않는다 '- 당신은 정확히 어떤 결과를 얻었습니까? –
@Shrapnel .. U r an etraordinary Crtic ... :) –