プロが教える店舗&オフィスのセキュリティ対策術

これまで遷移してきたサイト内のURLをHTMLに表示したいと思いましたが、
直前のURLは表示できるものの、2つ以上前のURLを表示する事ができませんでした。

何らかの方法で、アクセス毎にセッションの配列に直前のURLを追記して、
ページ間の遷移の際その情報を保持し続けられれば解決すると思うのですが、
どのようにコーディングすればよいかわかりませんでした。

その為、何らかのアドバイスを頂ける方がいらっしゃいましたら、ご教示の程よろしくお願いします。

【ソース(index1.php, index2.php, index3.php, index4.php, index5.php共通)】
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>1ページ目</title>
</head>
<body>
<p>
<?php
if (strlen($_SERVER["HTTP_REFERER"]) != 0) {
echo "リンク元は";
echo $_SERVER["HTTP_REFERER"];
echo "です。";
}
?>
</p>
<p><a href="index1.php">リンク1</a></p>
<p><a href="index2.php">リンク2</a></p>
<p><a href="index3.php">リンク3</a></p>
<p><a href="index4.php">リンク4</a></p>
<p><a href="index5.php">リンク5</a></p>
</body>
</html>

A 回答 (1件)

全てのPHPファイルの先頭に、


<?php
session_start();
if(isset($_SESSION['ref_history'])){
if(is_array($_SESSION['ref_history'])){
$_SESSION['ref_history'][] = $_SERVER['HTTP_REFERER'];
}else{
$_SESSION['ref_history'] = array();
$_SESSION['ref_history'][] = $_SERVER['HTTP_REFERER'];
}
}else{
$_SESSION['ref_histroy'] = array();
$_SESSION['ref_history'][] = $_SERVER['HTTP_REFERER'];
}

?>

と言ったようにすればスーパーグローバル変数$_SESSIONに配列として格納されるかと思います。session_start関数は、必ず何か値の出力(HTMLやecho,printなどを表示する)前に記述します。
他にも単純にCOOKIEに落とす方法などあり、もっとよい方法があるかもしれませんので、一例として、参考まで、とお考えください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ご教示いただいたソースを使用した所、意図した動作となりました。

どうもありがとうございました。

お礼日時:2009/06/19 10:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!