>  기사  >  백엔드 개발  >  PHP 프로그램 헤더 위치 점프 주의사항

PHP 프로그램 헤더 위치 점프 주의사항

伊谢尔伦
伊谢尔伦원래의
2017-06-23 14:02:163349검색

우리 모두 알고 있듯이 PHP 웹사이트로 이동하는 방법에는 JS, HTML META 새로 고침, PHP 헤더("location: $url")라는 세 가지 방법이 있습니다. 그러나 여기에는 쉽게 오류가 발생할 수 있는 매우 작은 세부 사항이 있습니다.

Header("location:test.PHP")가 성공적으로 점프합니다. 다음 세 가지 사항 외에도 주의해야 할 전제 조건이 있습니다.

1 위치와 " :" 기호를 입력하지 않으면 오류가 발생합니다.
2. 헤더를 사용하기 전에는 출력이 불가능합니다.
3. 헤더 뒤의 php 코드도 실행됩니다.

전제는 editor가 UTF-8 형식이 아닌 UTF-8 BOM-free 형식으로 작성되었다는 것입니다. 기억하다!

한번 점프 프로그램을 만들었는데 이 점을 무시하고 실제로 점프가 실패했습니다.

프로그램의 전체 소스코드는 다음과 같습니다. 프로그램 주소: http://www.***.com/go.php

<?php
error_reporting(7);
$url = urldecode( trim($_REQUEST[&#39;url&#39;]));
if($url)
{
    header("Location: $url");

} else {

    exit(&#39;Error Input,<a href="http://www.***.com/?f=go.php">go back</a>&#39;);
}


접속 주소: http://www.*** .com/go.php? url=http%3A%2F%2Fwww.zbphp.com%2F일 때 Firefox 브라우저는 정상입니다. 나중에 이 점프 프로그램을 회사의 다른 웹사이트에 복사하고 QQ의 친구들에게 테스트해 달라고 요청했습니다. 그 결과 많은 사람들이 열 수 없다고 말했습니다. IE 기반 브라우저에서는 액세스할 수 없다는 메시지가 직접 표시됩니다. 을(를) 찾을 수 없으며 Chrome에서 때때로 재설정되었거나 찾을 수 없습니다라는 메시지가 표시됩니다. Firefox로 테스트할 때 가끔 찾을 수 없다는 메시지가 표시되지만 한 번 더 새로고침하면 정상적으로 표시됩니다.

코드를 주의 깊게 확인하세요. 문제가 없습니다. 게다가, Firefox는 점프할 수 있는데, 예전에 읽은 내용이 생각났습니다. IE 브라우저출력 콘텐츠 바이트가 너무 작으면(512바이트 미만) 무시됩니다. 그런 다음 모든 브라우저가 테스트를 통과하기 전에 소스 코드가 헤더 위치에서 js html로 변경되었습니다. Firefox 클릭 프롬프트 cannot find the xxx server 이제 go.php의 전체 소스 코드는 다음과 같습니다.

<?php
error_reporting(7);
function gheader($url)
{
echo &#39;<html><head><meta http-equiv="Content-Language" content="zh-CN">
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=gb2312"><meta http-equiv="refresh"
content="0;url=&#39;.$url.&#39;"><title>loading ... </title></head><body><p style="display:none">
<script type="text/javascript">
var cnzz_protocol = (("https:" == document.location.protocol)?"https://":"http://"); 
document.write(unescape("%3Cspan id=\&#39;cnzz_stat_icon_5696423\&#39;%3E%3C/span%3E%3Cscript src=\&#39;" + cnzz_protocol + "s9.cnzz.com/stat.php%3Fid%3D5696423%26show%3Dpic1\&#39; type=\&#39;text/javascript\&#39;%3E%3C/script%3E"));</script></p>
<script>window.location="&#39;.$url.&#39;";</script></body></html>&#39;;
exit();
}

$url = urldecode( trim($_REQUEST[&#39;url&#39;]));
if($url)
{
    gheader($url);

} else {

    exit(&#39;Error Input,<a href="http://www.***.com/?f=go.php">go back</a>&#39;);
}

PHP 점프의 경우 JS+HTML META를 사용하는 것이 가장 좋은 방법이라고 생각합니다. HTML META는 JS가 비활성화된 경우에도 방문자가 계속 이동할 수 있도록 보장할 수 있습니다 .

위 내용은 PHP 프로그램 헤더 위치 점프 주의사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.