最初の例は次を使用しています。
HTTP GET
ページの読み込みをリクエストします。HTTP POST
リクエスト送信フォーム。- フォームのデータはセッションに保存されます。
HTTP GET
ページの読み込みをリクエストします。
2 番目の例はgoto
、追加の HTTP 要求を回避して、バッファーを「リフロー」するために使用しています。
HTTP GET
ページの読み込みをリクエストします。HTTPPOST
リクエスト送信フォーム。- バッファがフラッシュされ、コンテンツが表示されます。
さらに、最後の例ではセッションを使用していません。
301
<!DOCTYPE html>
<html>
<head>
<!-- ow noez! -->
</head>
<body>
<?php
// A very common scenario in user-flow handling is redirecting user to the page itself after submitting form, e.g.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['a'])) {
// Suppose there was an error & I've populated the error in $_SESSION.
// Now I would redirect user back to the form. This is because there
// is markup in the upper template hierarchy layer, e.g. "<!-- ow noez! -->"
header('Location: ' . $_SERVER['REQUEST_URI']);
exit;
}
}
?>
<form action="" method="post">
<?php if (isset($time)):?>
<pre>This value is from the past: <?=$time?></pre>
<?php endif;?>
<pre>Next time: <?php $time = time(); echo $time;?></pre>
<input type="submit" name="a" value="back in time!">
</form>
</body>
</html>
後藤
<?php
goback:
ob_start();
?>
<!DOCTYPE html>
<html>
<head>
<!-- ow noez! -->
</head>
<body>
<form action="" method="post">
<?php if (isset($time)):?>
<pre>This value is from the past: <?=$time?></pre>
<?php endif;?>
<pre>Next time: <?php $time = time(); echo $time;?></pre>
<input type="submit" name="a" value="back in time!">
</form>
<?php
// A very common scenario in user-flow handling is redirecting user to the page itself after submitting form, e.g.
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['a'])) {
ob_clean();
$_POST = [];
$_SERVER['REQUEST_METHOD'] = 'GET';
goto goback;
}
}
?>
</body>
</html>
goto
シナリオは 301 よりも優れていませんか?