0

PHPでのプログラミングは初めてです。よろしくお願いします...

ヘッダー関数を使用する場合、postメソッドからの変数を(動的に)使用すると、更新オプションが機能しません。番号をハードコーディングすると、機能します。私はさまざまなオプションを試しました。ここで私のコード全体を見ることができます。更新を動的に機能させることに成功しませんでした。誰かが助けることができますか?

<?php
if($_POST['time']>0) {
     $t = $_POST['time'];
     $u =$_POST['url'];
     echo "You will be redirected to the " .$u . " website in " .$t. "seconds";
     //header("refresh:5; url=http://www.google.com");

     //header("refresh:($_POST['time']);url=($_POST['url'])"); 
     header('refresh: ' .$t);
     header('Location: '.$u);
     exit;       
}
?>
4

5 に答える 5

1

echoステートメントのような出力の前にheader()を呼び出す必要があります。ブラウザに何かが出力された後は、単に機能しません。

于 2012-06-25T22:39:38.673 に答える
1

Refreshヘッダーは単なる数字ではなく、URLも含まれているはずです。形式は次のとおりです。

Refresh: 5; url=http://something.local/

その場合、Locationヘッダーは存在しないはずです。

header("Refresh: $t; url=$u");

http://en.wikipedia.org/wiki/HTTP_refreshも参照してください

于 2012-06-25T22:40:58.500 に答える
1

header画面に出力が出力された後は、php関数を呼び出すことはできません。そのechoステートメントを削除すると、正しく機能するはずです。

于 2012-06-25T22:41:03.120 に答える
0
if ($_POST['time'] && $_POST['url'])
{
    $time = (integer)$_POST['time'];
    $url = strip_tags($_POST['url']);
    echo "You will be redirected to the " . $url . " website in " . $time . "seconds";
    header('Refresh:' . $time . ';url=' . $url);
}
于 2012-06-25T22:53:05.610 に答える
0

これは、JavaScriptリダイレクトを使用してより確実に実行されます。

echo "<p>You will be redirected in ".$t." seconds.</p>";
echo "<p>Click <a href=\"".$u."\">here</a> to go immediately.</p>";
echo "<script type=\"text/javascript\">setTimeout(function() {location.href = ".json_encode($u).";},".$t."000);</script>";
于 2012-06-25T22:35:46.810 に答える