[英]PHP hit counter issue
我有3個php頁面。
Counter.php-我希望此文件顯示Counter 2,Counter 3獲得多少點擊。
<!DOCTYPE html>
<html>
<head>
<title>Counter</title>
</head>
<body>
You visited page Counter2
<?php include 'Counter2.php'; echo $Counter; ?>
Times.
You visited page Counter3
<?php include 'Counter3.php'; echo $Counter3; ?>
Times.
</body>
</html>
Counter2.php-我想計算此頁面的點擊量。
<?php
session_start();
if(isset($_SESSION["counter"]))
{
$counter = $_SESSION["counter"];
}
else
{
$counter = 0;
}
$_SESSION["counter"] = $counter + 1;
?>
<!DOCTYPE html>
<html>
<head>
<title>Counter</title>
</head>
<body>
<?= $counter ?>
</body>
</html>
Counter3.php-我想計算此頁面的點擊量。
<?php
session_start();
if(isset($_SESSION["counter3"]))
{
$counter3 = $_SESSION["counter3"];
}
else
{
$counter3 = 0;
}
$_SESSION["counter3"] = $counter3 + 1;
?>
<!DOCTYPE html>
<html>
<head>
<title>Counter</title>
</head>
<body>
You visted this page this many times:
<?= $counter3 ?>
</body>
</html>
現在,一切正常,但是,當我包含php文件時, <?php include 'Counter3.php'; echo $Counter3; ?>
<?php include 'Counter3.php'; echo $Counter3; ?>
<?php include 'Counter3.php'; echo $Counter3; ?>
記錄點擊的繼續增大,當我加載Counter.php文件的數量。 我不想要它,我只想Counter.php記錄Counter2和Counter3的點擊次數。 並停止Counter.php增加點擊次數。
您可以使用$_SERVER['REQUEST_URI']
向counter2.php和counter3.php添加一個額外的if,如果$_SERVER['REQUEST_URI']
指向counter.php,則可以跳過增加計數器的操作
包含頁面會使代碼運行,因此它將增加頁面中的所有計數器。 而是直接使用$_SESSION[]
變量。
<?php
session_start()
?>
<!DOCTYPE html>
<html>
<head>
<title>Counter</title>
</head>
<body>
You visited page Counter2 <?php echo $_SESSION["counter2"]; ?> Times.
You visited page Counter3 <?php echo $_SESSION["counter3"]; ?> Times.
</body>
</html>
另外,在PHP中,您可以執行以下操作:
$_SESSION["counter3"] = isset($_SESSION["counter3"]) ? $_SESSION["counter3"] : 0;
//$_SESSION["counter3"] = $_SESSION["counter3"] ?? 0; // only in PHP 7
另外,您不必在每個頁面上都創建此代碼,因為從長遠來看,它可能會變得凌亂。
<?php #counter.php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
if(isset($_SESSION['counter'][$_SEVER['REQUEST_URI']])){
$_SESSION['counter'][$_SERVER['REQUEST_URI']] = $_SESSION['counter'][$_SEVER['REQUEST_URI']] + 1
} else {
$_SESSION['counter'][$_SERVER['REQUEST_URI']] = 1;
}
function countpagetimes(){
return $_SESSION['counter'][$_SERVER['REQUEST_URI']];
}
?>
<?php #somepage.php
include 'counter.php';
echo 'You visited this page ' . countpagetimes() . ' times'.
?>
有幾個選項可以解決此問題:
$_SERVER['REQUEST_URI']
讓計數器僅在URI不包含counter.php時遞增。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.