ホーム » ブログ » ページの閲覧履歴を表示
このエントリーをはてなブックマークに追加
@2012/10/04

スポンサーリンク
このサイトでページ閲覧履歴の表示機能をPHPで実装しました。
実現方法は超簡単です。簡単に言えば、ご閲覧したページのURLとページの名前をローカルクッキーに保存して、ページを表示するときに、ローカルクッキーに保存した閲覧履歴データを取り出し、ページに表示します。
さぁ、実現方法を詳しく紹介します。
①ページをご閲覧した時、ページの情報をローカルクッキーに保存します。コードの抜粋は以下の通り:
 <img src="あなたのサイトPATH/history.php?pagename=現在んのページの名前" width="1" height="1" alt="check"> 
※上記のタグコードをあなたのページ内に配置してください。例:場所は</body>の直前に貼り付ける。 ※history.phpはご閲覧したページの情報をローカルクッキーに保存します。詳しいコード本記事の最後の部分にご確認ください。 ②それから、今後のページを表示する前に、ローカルから閲覧履歴データを取り出します。例:my_display.php コードの抜粋は下記の通りです。
//閲覧履歴情報を得る. page_urls:ページURL配列. page_names:ページ名称配列
	$listnum = count($_COOKIE["page_urls"]);
	for($i=0;$i<$listnum;$i++){
		$browsing_history[$i]['page_url'] = $_COOKIE['page_urls'][$i];
		$browsing_history[$i]['page_name'] = $_COOKIE['page_names'][$i];
	}
	assign('browsing_history',$ browsing_history); 

③さぁ、ページを開くときに、閲覧履歴を表示します。例:my_display.phpご取得したbrowsing_historyのデータを表示します。
コードは以下の通りです。
<?php foreach($browsing_history as $key=>$value){ ?>
	<a href="<?php $value['page_url']; ?>">
		<?php $value['page_name']; ?>
	</a>
}

以上、ページの閲覧履歴をPHPコードで実現しました。本記事のページにもページ閲覧履歴を実装しています。

最後、ページ閲覧履歴を表示するための最も重要の部分history.phpのコードを公開します。
 <?php
session_start();

define("DOMAIN", "taobao.jp");//ドメイン
define("MAX_LINK", 10);//リンク最大表示件数
define("KEEP_DAY", 365);////履歴保持日数

$page_name = $_GET['pagename'];//ページ名称
$pageurl = $_SERVER['HTTP_REFERER'];//ページのURL

if(isset($page_name)){
	//特殊文字をエスケープする
	$page_name = code_escape($page_name);
}else{
	//最新閲覧したページの内容を得って、ページタイトルを取り出す
	if($site_list = @file("$pageurl")){
		for($i=0;$i<count($site_list);$i++){
			$title = $site_list[$i];
			//ページのtitleタグかを判断。matchしたらpagenameにする
			if(preg_match("/<title[^>]*>([^<]*)<\/title[^>]*>/i",$title,$match)){
				$page_name = $match[1];
				if(function_exists("mb_convert_encoding")){
					$page_name = mb_convert_encoding($page_name, "UTF-8", "auto");
				}
				$title_find = true;
				break;
			}
		}
		//titleがないページの場合、pagenameをURLにする
		if(!$title_find) {
			$page_name = $pageurl;
		}
	}
	//ページの内容を得れない場合、ページのURLを名前にする
	else{
		$page_name = $pageurl;
	}
}
//ページ名称をカストマイズする
$page_name = title_customize($page_name);

//ローカルcookieに保存されているURLデータの数
$num = count($_COOKIE["page_urls"]);
for($i=0;$i<$num;$i++){
	if($i == 0){
		$sub_index = $i;
	}else{
		$sub_index = $sub_index+1;
	}
	if($pageurl == $_COOKIE['page_urls'][$i]){
		$sub_index = $sub_index -1;
	}else{
		$page_url_temp[$sub_index] = $_COOKIE['page_urls'][$i];
		$page_name_temp[$sub_index] = $_COOKIE['page_names'][$i];
	}
}

$sub_index = count($page_url_temp);
if($sub_index >= MAX_LINK){
	$sub_index = MAX_LINK-1;
}
//ローカルcookieから取ったデータを又クッキーに入れる。(indexを1から。index0は最新閲覧ページ)
for($i=0;$i<$sub_index;$i++){
	$new_index = $i +1;
	@setcookie("page_urls[$new_index]", "$page_url_temp[$i]", time()+KEEP_DAY*24*3600, "/", ".".DOMAIN);
	@setcookie("page_names[$new_index]", code_escape($page_name_temp[$i]), time()+KEEP_DAY*24*3600, "/", ".".DOMAIN);
}
//最新閲覧したページをクッキーに入れる
@setcookie("page_urls[0]", "$pageurl", time()+KEEP_DAY*24*3600, "/", ".".DOMAIN);
@setcookie("page_names[0]", "$page_name", time()+KEEP_DAY*24*3600, "/", ".".DOMAIN);

//header("Content-Type: image/gif");


/*
 * マジッククォートを取り除く
 */
function code_escape($text){
	if(get_magic_quotes_gpc()){
		$text = stripslashes($text);
	}
	return $text;
}
/*
 * ページ名称をカストマイズする。
 */
function title_customize($title_str) {
	define("DELETE_TEXT", "_taobao.jp");//タイトル中で消したいまた置換したい文字。例:define("DELETE_TEXT", "サイト名");
	define("ADD_FRONT_TEXT", "");//表示するページ名の前に追加する文字
	define("ADD_END_TEXT", "");//表示するページ名の後ろに追加する文字
	
	//消したい文字列を消す
	if(DELETE_TEXT){
		$title_str = str_replace (DELETE_TEXT, "", $title_str);
	}
	//頭・後ろに言葉を追加する
	$title_str = ADD_FRONT_TEXT . $title_str . ADD_END_TEXT;

	return $title_str;
} 

?> 


お願い:あなたのサイトに本記事のリンクを貼り付ければ幸いです。


♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
3人
このエントリーをはてなブックマークに追加


★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
r4
コメント@2013年03月07日
Gravatar-グローバルに認識されるアバター_zanmai.net
これは大きな問題と思いますので、よくわかりません。
コメント@2012年10月26日
Gravatar-グローバルに認識されるアバター_zanmai.net
3DSマジコン日本向けの公式代理店です。http://www.ndswayz.com/ 全場送料無料

お名前:

 

EMAIL:

 

URL:

 

認証コード:

zanmai.net-safecode

 


※会員の方は認証コードを要らないから、新規登録をオススメ!

check