2009-05-14 25 views
2

ユーザーがサイトのXページにアクセスしたときに特定のアクションを実行したい各ページの読み込みを増やす方法(PHPで)?

外部(txtファイルまたはdb)にカウンタを格納する必要がありますか?

私は、各ページの負荷、それをインクリメントし、カウンターを0に設定する方法を考えることはできません。カウンタは常に0にリセットされるか、何か明白なものがありませんか?

+0

$ _COOKIESのスーパーグローバルを使って同じことができますが、精度と信頼性のために$ _SESSIONを推奨します。 http://us3.php.net/manual/en/reserved.variables.cookies.php – tj111

答えて

14

ちょうど、個人が閲覧したページ数格納する$_SESSIONデータを使用するために非常に簡単になります。

$_SESSION['pageviews'] = ($_SESSION['pageviews']) ? $_SESSION['pageviews'] + 1 : 1; 
+0

これはうまくいかないようですが、ページビューは常に1のままです – meleyal

+1

htxt:$ _SESSIONを使用する前にsession_start()を呼び出すようにしてください –

+0

htxt:session_start()はデータを出力する前にコールする必要があります。データはサーバーから送信されたヘッダーでも、コード内のエコーやプリントでもかまいません。 –

-2

if文を使用して、すでに設定されているかどうかを確認します。

if(isset($count)) 
{ 
    $count = $count + 1; 
} 
else 
{ 
    $count = 1; 
} 

getメソッドを使用して、ファイルまたはデータベースにカウントを書き込まないようにすることもできます。

+0

ユーザーが戻るボタンを押すか、複数のタブを開いてコンテンツの重複問題が発生した場合、URLにカウントを入れることはできません検索エンジンの目的。 –

+0

真。私はそれについて考えなかった。 –

0

ユーザーが最初のページになったときにセッションを開始し、各時間ユーザーリロード/訪問のサブページ値をインクリメントすることができます。これを行うもう1つの方法は、すべてのページに非表示のフィールドを持ち、その値を取り出し、インクリメントして新しいページに投稿することです。

<input type="hidden" value="2" id="blabla" /> 
+2

2つ目の方法はすべてのクリックがPOSTの場合にのみ機能し、ユーザーがページを再読み込みしたり、別のタブで複数のページを開いたり、戻るボタンを押したりした場合には壊れます。 –

+0

:P –

0

答えは「はい」です。これは外部的に保存する必要があります。これは、デフォルトではPHPがゼロのメモリ持続ポリシーを持っているためです。これは、基本的にあなたのPHPスクリプトが実行されたら何もメモリに残っていないことを意味します。あなたは、増分の読み書きを簡単なtxtファイルについて考えたいかもしれません低トラフィックの多いサイトの場合

。トラフィック量の多いサイトでは、非常に単純なmysqlテーブルが機能するかもしれません。

0

すでにユーザーは、彼らがサイトを離れ、別の日に戻ってきた場合でも、(ユーザー名&パスワードのような)が誰であるかを決定する方法を持っていますか?または、訪問者が見ているページの数を追跡し、xページ目で何か特別なことをすることに興味がありますか?

それは第二だ場合、あなたはすでにあなたがカウンターを格納できるセッション変数を持っています。

$_SESSION['views'] = $_SESSION['views'] + 1 
if($_SESSION['views'] == x) ... 
1

最も簡単な方法は、PHPのsession storageを使用することです。

session_start(); 
@$_SESSION['pagecount']++; 

PHPは、自動的にユーザーにセッションクッキーを送信し、かつ透過このクッキーに関連付けられているフラット・ファイル内の$ _SESSIONのコンテンツを格納します。あなたは本当にこの問題のために独自のソリューションをロールバックする必要はありません。

関連する問題