Php 页面重新加载时不增加
我在页面上放置了一个点击计数器。它读取一个文本文件,增加文件中的数字,然后在页面中输出增加的值Php 页面重新加载时不增加,php,hitcounter,Php,Hitcounter,我在页面上放置了一个点击计数器。它读取一个文本文件,增加文件中的数字,然后在页面中输出增加的值 $hitsFile = "hits/exps/stats.txt"; $hits = file($hitsFile); $hits[0]++; $fp = fopen($hitsFile , "w"); flock($fh, LOCK_EX); fwrite($fp , $hits[0]); fclose($fp); 我的问题是,如果我重新加载页面,代码将增加命中率。我不想那样。我想
$hitsFile = "hits/exps/stats.txt";
$hits = file($hitsFile);
$hits[0]++;
$fp = fopen($hitsFile , "w");
flock($fh, LOCK_EX);
fwrite($fp , $hits[0]);
fclose($fp);
我的问题是,如果我重新加载页面,代码将增加命中率。我不想那样。我想用session来解决这个问题,但是使用session,为了再次增加点击量,我需要退出站点并再次访问。我也不想那样
我希望它不是在重新加载页面时增加,而是在重新访问页面时增加
例如,假设我有两个页面的网站,主页和联系人,联系人页面上有一个点击计数器。如果我重新加载(刷新)联系人页面,我不希望点击计数器增加,但是如果我离开联系人页面访问主页,然后重新访问联系人页面,我希望它增加
简而言之,我不希望它在页面重新加载时增加。有办法吗
$\u会话['URL']
中时,才更新命中计数$\u会话['URL']
中$\u会话['URL']
中时,才更新命中计数$\u会话['URL']
中$\u会话['URL']
中时,才更新命中计数$\u会话['URL']
中$\u会话['URL']
中时,才更新命中计数$\u会话['URL']
中session_start()代码>到顶部
现在将您的if更改为:
if (!isset($_SESSION['lastpage']) || $_SESSION['lastpage'] != $_SERVER['QUERY_STRING') {
$hits[0]++;
}
$_SESSION['lastpage'] = $_SERVER['QUERY_STRING'];
这基本上会迫使某人移动到另一个页面,如果他们想增加计数器。Addsession_start()代码>到顶部
现在将您的if更改为:
if (!isset($_SESSION['lastpage']) || $_SESSION['lastpage'] != $_SERVER['QUERY_STRING') {
$hits[0]++;
}
$_SESSION['lastpage'] = $_SERVER['QUERY_STRING'];
这基本上会迫使某人移动到另一个页面,如果他们想增加计数器。Addsession_start()代码>到顶部
现在将您的if更改为:
if (!isset($_SESSION['lastpage']) || $_SESSION['lastpage'] != $_SERVER['QUERY_STRING') {
$hits[0]++;
}
$_SESSION['lastpage'] = $_SERVER['QUERY_STRING'];
这基本上会迫使某人移动到另一个页面,如果他们想增加计数器。Addsession_start()代码>到顶部
现在将您的if更改为:
if (!isset($_SESSION['lastpage']) || $_SESSION['lastpage'] != $_SERVER['QUERY_STRING') {
$hits[0]++;
}
$_SESSION['lastpage'] = $_SERVER['QUERY_STRING'];
这基本上会迫使某人移动到另一个页面,如果他们想增加计数器。在您的每个页面中,您需要在会话中写入页面名称。
这样做:
$_SESSION['page'] = 'contact';
在需要计算点击次数的页面上,需要检查此会话密钥。
例如,如果您在“联系人”页面,则$\u会话['page']=='contact'
现在,当您访问“主页”时:
$page = $_SESSION['page'];
if($page != 'homepage')
{
//increment your hits counter
$_SESSION['page'] = 'homepage';
}
在每个页面中,您需要在会话中写入页面名称。
这样做:
$_SESSION['page'] = 'contact';
在需要计算点击次数的页面上,需要检查此会话密钥。
例如,如果您在“联系人”页面,则$\u会话['page']=='contact'
现在,当您访问“主页”时:
$page = $_SESSION['page'];
if($page != 'homepage')
{
//increment your hits counter
$_SESSION['page'] = 'homepage';
}
在每个页面中,您需要在会话中写入页面名称。
这样做:
$_SESSION['page'] = 'contact';
在需要计算点击次数的页面上,需要检查此会话密钥。
例如,如果您在“联系人”页面,则$\u会话['page']=='contact'
现在,当您访问“主页”时:
$page = $_SESSION['page'];
if($page != 'homepage')
{
//increment your hits counter
$_SESSION['page'] = 'homepage';
}
在每个页面中,您需要在会话中写入页面名称。
这样做:
$_SESSION['page'] = 'contact';
在需要计算点击次数的页面上,需要检查此会话密钥。
例如,如果您在“联系人”页面,则$\u会话['page']=='contact'
现在,当您访问“主页”时:
$page = $_SESSION['page'];
if($page != 'homepage')
{
//increment your hits counter
$_SESSION['page'] = 'homepage';
}
我建议,我更喜欢这种方法,在根目录中创建以下文件夹:cnt和log。。。然后将以下文件放入cnt文件夹cnt.php
和showcnt.php
cnt.php
<?php
##############################################################################
# Php Counter With Advanced Technology For The Prevention Of Reloading Pages #
# Version: 1.4 - Date: 13.11.2014 - Created By Alessandro Marinuzzi [Alecos] #
##############################################################################
function cnt($file) {
session_start();
global $pagecnt;
$reloaded = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
$thispage = basename($_SERVER['SCRIPT_FILENAME']);
if (!isset($_SESSION['first_go'])) {
$_SESSION['first_go'] = 1;
$first_go = TRUE;
} else {
$first_go = FALSE;
}
if (!isset($_SESSION['thispage'])) {
$_SESSION['thispage'] = $thispage;
}
if ($_SESSION['thispage'] != $thispage) {
$_SESSION['thispage'] = $thispage;
$new_page = TRUE;
} else {
$new_page = FALSE;
}
$pagecnt = rtrim(file_get_contents($file));
if ((!$reloaded) && ($new_page == TRUE) || ($first_go == TRUE)) {
$fd = fopen($file, 'w+');
flock($fd, LOCK_EX);
fwrite($fd, ++$pagecnt);
flock($fd, LOCK_UN);
fclose($fd);
}
}
?>
<?php
##############################################################################
# Show Counter Results - v.1.4 - 13.11.2014 By Alessandro Marinuzzi [Alecos] #
##############################################################################
function gfxcnt($file) {
global $number;
$number = rtrim(file_get_contents($file));
$lenght = strlen($number);
$gfxcnt = "";
for ($i = 0; $i < $lenght; $i++) {
$gfxcnt .= $number[$i];
}
$gfxind = "<span class=\"counter\"><span class=\"number\">$gfxcnt</span></span>";
echo $gfxind;
}
?>
那么,请编辑index.php或其他php页面。。。在开头写上这段代码:
<?php session_start(); include("cnt/cnt.php"); cnt("log/index.txt"); include("cnt/showcnt.php"); ?>
那么,编辑index.php或其他php页面。。。并使用此代码读取计数器文件:
<?php gfxcnt("log/index.txt"); ?>
总之,我希望你会发现我的答案很有用:)我的计数器可以写/读多个php页面
来源:我的博客()我建议这种方法,是我的首选,在根目录中创建这些文件夹:cnt和log。。。然后将以下文件放入cnt文件夹cnt.php
和showcnt.php
cnt.php
<?php
##############################################################################
# Php Counter With Advanced Technology For The Prevention Of Reloading Pages #
# Version: 1.4 - Date: 13.11.2014 - Created By Alessandro Marinuzzi [Alecos] #
##############################################################################
function cnt($file) {
session_start();
global $pagecnt;
$reloaded = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
$thispage = basename($_SERVER['SCRIPT_FILENAME']);
if (!isset($_SESSION['first_go'])) {
$_SESSION['first_go'] = 1;
$first_go = TRUE;
} else {
$first_go = FALSE;
}
if (!isset($_SESSION['thispage'])) {
$_SESSION['thispage'] = $thispage;
}
if ($_SESSION['thispage'] != $thispage) {
$_SESSION['thispage'] = $thispage;
$new_page = TRUE;
} else {
$new_page = FALSE;
}
$pagecnt = rtrim(file_get_contents($file));
if ((!$reloaded) && ($new_page == TRUE) || ($first_go == TRUE)) {
$fd = fopen($file, 'w+');
flock($fd, LOCK_EX);
fwrite($fd, ++$pagecnt);
flock($fd, LOCK_UN);
fclose($fd);
}
}
?>
<?php
##############################################################################
# Show Counter Results - v.1.4 - 13.11.2014 By Alessandro Marinuzzi [Alecos] #
##############################################################################
function gfxcnt($file) {
global $number;
$number = rtrim(file_get_contents($file));
$lenght = strlen($number);
$gfxcnt = "";
for ($i = 0; $i < $lenght; $i++) {
$gfxcnt .= $number[$i];
}
$gfxind = "<span class=\"counter\"><span class=\"number\">$gfxcnt</span></span>";
echo $gfxind;
}
?>
那么,请编辑index.php或其他php页面。。。在开头写上这段代码:
<?php session_start(); include("cnt/cnt.php"); cnt("log/index.txt"); include("cnt/showcnt.php"); ?>
那么,编辑index.php或其他php页面。。。并使用此代码读取计数器文件:
<?php gfxcnt("log/index.txt"); ?>
总之,我希望你会发现我的答案很有用:)我的计数器可以写/读多个php页面
来源:我的博客()我建议这种方法,是我的首选,在根目录中创建这些文件夹:cnt和log。。。然后将以下文件放入cnt文件夹cnt.php
和showcnt.php
cnt.php
<?php
##############################################################################
# Php Counter With Advanced Technology For The Prevention Of Reloading Pages #
# Version: 1.4 - Date: 13.11.2014 - Created By Alessandro Marinuzzi [Alecos] #
##############################################################################
function cnt($file) {
session_start();
global $pagecnt;
$reloaded = isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] === 'max-age=0';
$thispage = basename($_SERVER['SCRIPT_FILENAME']);
if (!isset($_SESSION['first_go'])) {
$_SESSION['first_go'] = 1;
$first_go = TRUE;
} else {
$first_go = FALSE;
}
if (!isset($_SESSION['thispage'])) {
$_SESSION['thispage'] = $thispage;
}
if ($_SESSION['thispage'] != $thispage) {
$_SESSION['thispage'] = $thispage;
$new_page = TRUE;
} else {
$new_page = FALSE;
}
$pagecnt = rtrim(file_get_contents($file));
if ((!$reloaded) && ($new_page == TRUE) || ($first_go == TRUE)) {
$fd = fopen($file, 'w+');
flock($fd, LOCK_EX);
fwrite($fd, ++$pagecnt);
flock($fd, LOCK_UN);
fclose($fd);
}
}
?>
<?php
##############################################################################
# Show Counter Results - v.1.4 - 13.11.2014 By Alessandro Marinuzzi [Alecos] #
##############################################################################
function gfxcnt($file) {
global $number;
$number = rtrim(file_get_contents($file));
$lenght = strlen($number);
$gfxcnt = "";
for ($i = 0; $i < $lenght; $i++) {
$gfxcnt .= $number[$i];
}
$gfxind = "<span class=\"counter\"><span class=\"number\">$gfxcnt</span></span>";
echo $gfxind;
}
?>
那么,请编辑index.php或其他php页面。。。在开头写上这段代码:
<?php session_start(); include("cnt/cnt.php"); cnt("log/index.txt"); include("cnt/showcnt.php"); ?>
那么,编辑index.php或其他php页面。。。并使用此代码读取计数器文件:
<?php gfxcnt("log/index.txt"); ?>
总之,我希望你会发现我的答案很有用:)我的计数器可以写/读多个php页面
来源:我的博客()我建议这种方法,是我的首选,在根目录中创建这些文件夹:cnt和log。。。然后将以下文件放入cnt文件夹cnt.php
和showcnt.php