エコーしようとしたのと同じページでセッション変数をクリアすると、セッション変数が空になるという奇妙な問題が発生します。これが私がやろうとしていることの簡単なタイプアップです。
この例を見てください。
ページA:
$_SESSION['referer'] = 'abc123';
header('Location: http://www.test.com/pageb.php');
exit();
ページB:
function get_referer() {
$referer = '';
if (isset($_SESSION['referer'])) {
$referer = $_SESSION['referer'];
$_SESSION['referer'] = null;
unset($_SESSION['referer']);
}
echo $referer;
}
Bページで関数を使ってこれを行うと...
私がそれをすべて単独で実行すると、それは機能します:
get_referer();
入力のvalue属性内でエコーを実行すると(呼び出された後に消去されるため、ページで関数を1回だけ実行するようにしてください)、ページのソースを表示しても何もエコーしませんでした。
<input type="hidden" name="referer" value="<?php get_referer(); ?>" />
ただし、面白いことに、input type = "text"を作成すると、正常に機能します。
<input type="text" name="referer" value="<?php get_referer(); ?>" />
この問題は、input type="hidden"のvalue属性でのみ発生します