php - 如何使用 php 使用 session 和文件 ID 来增加计数

标签 php html mysql session count

下面显示了我的代码以增加我网站的发布 View 数量。现在,每当我单击刷新时它都会增加。我在代码的某些部分使用了 session 命令,但是它不起作用,每当我单击刷新时它都会增加。我想了解如果用户在同一 session 中,我怎么能不让用户增加 session 。

如能帮助我,将不胜感激。

<?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();

它所做的是(如名称所示)在每次增量后销毁您的 session ,因此下次加载页面时,$_SESSION['id'] 不再实例化,因此您的 if(!isset($ _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();
        }
    }
}
?>

我使用数组 $_SESSION['id'] 为每个不同的页面 ID 存储一个键,然后每次我们测试是否需要增加您的计数器时,我们检查该页面是否存在数组键,如果是,我们不会递增。

希望对您有所帮助! :)

关于php - 如何使用 php 使用 session 和文件 ID 来增加计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699656/

相关文章:

Mysql无法添加外键

html - Bootstrap - 一行 3 列,标题在行外

javascript - 在重新加载动态内容后统一调整一组按钮的大小

mysql - 在没有二进制日志的情况下从 InnoDB 表中删除

php - 如何在 PHP 中删除空格后的所有内容?

jquery - 网站在 Mac Safari、Firefox、Chrome 上预览效果很好,但在 PC 浏览器上只显示正文

php - 在 PHP 中实现一个简单的准备好的查询

PHP 正则表达式 : split on unescaped delimiter

php从mysql获取信息

php - PDO 错误 (42000)