1

? を過ぎたものに基づいて動的リダイレクトを行う必要があります。URLで。

たとえば。次のようなリンクを送信した場合:

http://go.com?http://link1.com

go.com は、15 秒の読み込みページを持つページを読み込みます。このページにはいくつかの html が含まれます。その人が何もしなければ、15 秒後に link1.com にリダイレクトされます。

このアクションは、疑問符の後に追加するすべての URL で発生するはずです

http://go.com?http://link2.com http://go.com?http://link5.com など

ここに私が見つけたコードがありますが、機能していません。

<?php
$delay = "15"; # how many seconds expire before automatic redirect
$site = $_GET['url']; ?>
<html>
<head>
<meta http-equiv="refresh" content="<?php echo $delay; ?>;url=http://<?php echo $site; ?>">
</head>
<body>
  redirecting you to <?php echo $site; ?> in <?php echo $delay; ?> seconds ...</p>
</body>
</html>

どんな助けでも素晴らしいでしょう。

4

3 に答える 3

0

URL をフォーマットするか、http://go.com/?url=http://link1.comまたは を使用$_SERVER['QUERY_STRING']してアクセスします。

リダイレクト先の URL の URL エンコードを考慮してください。そうしないと、ブラウザーがリンク先 URL の一部を go.com URL の一部として誤解し、奇妙なエラーやリダイレクトの破損が発生する可能性があります。とを見てurlencode()くださいurldecode():

リンクを作成するときに、ユーザーがクリックしてリダイレクト ページに移動します。

<a href="http://go.com?<?=urlencode("http://link1.com/?a=b&c=d#e")?>">Go to Link1!</a>

これにより、例のターゲット URL が に変わり、http://link1.com/?a=b&c=d#e: http%3A%2F%2Flink1.com%2F%3Fa%3Db%26c%3Dd%23e/ ? link1.comURL内の & # 文字は、go.comページの動作に影響を与えることはできません。

リダイレクトページのリンク取得時

$site = urldecode($_SERVER['QUERY_STRING']);

これは、前のステップで行ったことを元に戻すためにラップされた の代わりに、私が提案$_SERVER['QUERY_STRING']した目的地 URL を取得するために使用します。$_GET['url']urldecode()urlencode()meta

また、このコードに基づいてhttp://、リダイレクタ ページの URL とリダイレクトmetaタグの両方に が含まれているようで、 にリダイレクトしようとしていhttp://http://link1.comます。http://メタ タグから を削除します。

さらに、リダイレクト ページを要求する場合 (迷惑です)、「ここをクリックしてすぐにリダイレクトする」リンクをページに追加してください。 .

于 2012-12-02T16:32:35.033 に答える
0

作業コード

<?php
$delay = 5; # how many seconds expire before automatic redirect
$delayMili = $delay * 1000; //converting it to miliseconds
$site = $_GET['url'];
?>
<html>
    <head>
        <script type='text/JavaScript'>
            setTimeout('window.location="<?php echo $site; ?>"',<?php echo $delayMili;?>)
        </script>
    </head>
    <body>
        redirecting you to <?php echo $site; ?> in <?php echo $delay; ?> seconds ...</p>
</body>
</html>
于 2012-12-02T16:48:06.767 に答える
0

urlencode および urldecode 関数を使用して、宛先 URL の特殊文字に関する問題を回避する必要があります。次の質問を参照してください:リンク変数でハイパーリンクを使用するにはどうすればよいですか?

于 2012-12-02T16:40:22.610 に答える