如何使用php使用会话和文件id增加计数

如何使用php使用会话和文件id增加计数,php,html,mysql,session,count,Php,Html,Mysql,Session,Count,下面显示了我的编码,以增加我的网站的发布视图数量。现在,每当我单击“刷新”时,它都会递增。我在代码的某些部分使用了session命令,但它不起作用,每当我单击refresh时,它就会递增。我想了解,如果用户在同一个会话中,我如何不让他们增加会话 如果你能帮助我,我将非常感激 <?php session_start(); $_SESSION['counted'] = true; if (isset($_GET['id'])) { $file_id = ($_GET['id']

下面显示了我的编码,以增加我的网站的发布视图数量。现在,每当我单击“刷新”时,它都会递增。我在代码的某些部分使用了session命令,但它不起作用,每当我单击refresh时,它就会递增。我想了解,如果用户在同一个会话中,我如何不让他们增加会话

如果你能帮助我,我将非常感激

<?php   
session_start();
$_SESSION['counted'] = true;

if (isset($_GET['id'])) {
    $file_id = ($_GET['id']); //$id is a new vairable given value to the id selected in publication.php

    if ($file_id <= 0) { //check if id is less than or equal to 0
        die('The ID is invalid, please check the technical process!');
    } else {
        mysql_query("SELECT * FROM files WHERE id='$file_id'");

        if (!isset($_SESSION['id'])) {
            $_SESSION['id'] = 0;
            $query = "UPDATE files SET visitors=visitors+1 WHERE id='$file_id'";
            mysql_query($query);
            mysql_close();
            session_destroy();
        }
    }
}
?>

每次刷新时它都会递增的原因是因为以下代码行:

session_destroy();
它所做的是(如名称所示)在每次增量后销毁会话,因此下次加载页面时,$\u session['id']不再实例化,因此if(!isset($\u session['id'])始终返回true

您可以尝试以下操作:

<?php   
session_start();
$_SESSION['counted'] = true;

if (isset($_GET['id'])) {
    $file_id = ($_GET['id']); //$id is a new variable given value to the id selected in publication.php

    if ($file_id <= 0) { //check if id is less than or equal to 0
        die('The ID is invalid, please check the technical process!');
    } else {
        mysql_query("SELECT * FROM files WHERE id='$file_id'");

        if (!isset($_SESSION['id'][strval($_GET['id'])])) {
            $_SESSION['id'][strval($_GET['id'])] = true;
            $query = "UPDATE files SET visitors=visitors+1 WHERE id='$file_id'";
            mysql_query($query);
            mysql_close();
        }
    }
}
?>

删除会话destroy的问题是,当我离开该页面并转到另一个具有相同计数器但id不同的页面时,它不会递增。但是,正如您所说,如果我们销毁会话,它将永远增加该页面id的计数器。因此,例如:php?id=149&php?id=150是不同的页面,但使用相同的计数器。很抱歉,它仍然会给我错误,在您放置“$\u session['id'][$\u GET['id']]的行中说“不能将标量值用作数组”=正确;”。你对这种错误有什么线索吗?啊,我道歉。首先需要将其转换为字符串。这样,它将是一个关联数组。当我再次访问计算机时,我会修正我的答案。当然。我会等你的,我还有问题。它表示“致命错误:如果(!isset(strval($\u SESSION['id'][$\u GET['id']])){”,则无法在“行中”的写入上下文中使用函数返回值”。