Heim  >  Artikel  >  Backend-Entwicklung  >  Vorsichtsmaßnahmen für PHP-Programm-Header-Sprünge

Vorsichtsmaßnahmen für PHP-Programm-Header-Sprünge

伊谢尔伦
伊谢尔伦Original
2017-06-23 14:02:163358Durchsuche

Wie wir alle wissen, gibt es drei Möglichkeiten, zu PHP-Websites zu springen: JS, HTML META Refresh und PHP-Header („location: $url“). Doch hier gibt es ein ganz kleines Detail, das leicht zu Fehlern führen kann.

Header("location:test.PHP") springt erfolgreich Neben den folgenden drei Punkten gibt es noch eine Voraussetzung, die beachtet werden muss:

1. Ort und :-Zeichen Dazwischen dürfen keine Leerzeichen stehen, sonst kommt es zu einem Fehler.
2. Es kann keine Ausgabe erfolgen, bevor der Header verwendet wird.
3. Der php-Code nach dem Header wird ebenfalls ausgeführt.

Voraussetzung ist, dass Ihr Editor im UTF-8-BOM-freien Format geschrieben ist, nicht im UTF-8-Format. Erinnern!

Einmal habe ich ein Sprungprogramm erstellt, diesen Punkt aber ignoriert und der Sprung war tatsächlich erfolglos.

Der vollständige Quellcode des Programms lautet wie folgt, Programmadresse: 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;);
}


Beim Zugriff Die Adresse lautet: http://www.***.com/go.php?url=http%3A%2F%2Fwww.zbphp.com%2F, der Firefox-Browser ist normal. Später habe ich dieses Sprungprogramm auf eine andere Website des Unternehmens kopiert und einige Freunde auf QQ gebeten, es zu testen. Infolgedessen sagten viele Leute, dass es nicht geöffnet werden könne: Der IE-basierte Browser meldete direkt, dass nicht darauf zugegriffen werden könne kann nicht gefunden werden, und Chrome meldet manchmal, dass es zurückgesetzt wurde oder nicht gefunden werden konnte. Beim Testen mit Firefox wird gelegentlich angezeigt, dass es nicht gefunden werden kann, aber nach einer weiteren Aktualisierung wird es normal angezeigt.

Überprüfen Sie den Code sorgfältig, es liegt kein Problem vor. Außerdem kann Firefox springen, und dann fiel mir etwas ein, das ich in der Vergangenheit gelesen hatte: IE-BrowserWenn die Ausgabeinhaltsbytes zu klein sind (weniger als 512 Bytes), Dann wird es ignoriert . Dann wurde der Quellcode vom Header-Speicherort in js html geändert, bevor alle Browser den Test bestanden haben. kann den xxx-Server nicht finden wurde nicht mehr angezeigt von 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;);
}

Für PHP Jump ist meiner Meinung nach die Verwendung von JS+HTML META der beste Weg. HTML META kann sicherstellen, dass Besucher auch dann noch springen können, wenn JS deaktiviert ist.

Das obige ist der detaillierte Inhalt vonVorsichtsmaßnahmen für PHP-Programm-Header-Sprünge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn