PHP点击计数器

问题描述 投票:0回答:5

我有一个 .php 脚本,可以计算按钮的点击次数并将它们放入 .txt 文件中,这里一切正常,但我现在只有一次计数。如果,比方说,我制作了两个按钮,它们将显示相同的点击次数。

我需要脚本分别为每个按钮工作...

PHP:

if( isset($_POST['clicks']) ) { 
    incrementClickCount();
}

function getClickCount()
{
    return (int)file_get_contents("clickit.txt");
}

function incrementClickCount()
{
    $count = getClickCount() + 1;
    file_put_contents("clickit.txt", $count);
}

HTML:

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" value="click me!" name="clicks">
</form>
<div>Click Count: <?php echo getClickCount(); ?></div>
php button counter
5个回答
4
投票

我认为你应该尝试不同的方法。首先,在文件中保存点击比在数据库中慢,所以你应该使用数据库而不是文件。

然后,你可以创建一个表,有

button_id
字段和对应的
click_number
字段。因此,如果单击带有
id="1"
的按钮,您将增加该按钮的
click_number
值。


1
投票

你可以给第二个按钮另一个名字,并将数据保存在另一个文件中?

另一种可能性是将所有按钮信息保存在同一个文件中,例如使用

explode
implode

[编辑:示例]

if( isset($_POST['clicks'])&& isset($_POST['buttonnumber'])) 
{
    incrementClickCount($_POST['buttonnumber']);
}

function getClickCount($num=0)
{
    $clickinfo = explode(":",file_get_contents("clickit.txt"));
    return (int)$clickinfo[$num];
}

function incrementClickCount($num=0)
{
    $clickinfo = explode(":",file_get_contents("clickit.txt"));
    $clickinfo[$num]++;
    file_put_contents("clickit.txt", implode(":",$clickinfo));
}

0
投票

如果两个按钮调用相同的函数:

function incrementClickCount()
{
    $count = getClickCount() + 1;
    file_put_contents("clickit.txt", $count);
}

那你当然只会得到一个柜台。

您可以将按钮制作成调用另一个函数的另一种形式,或者执行以下操作:

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" value="click me!" name="clicks">
    <input type="submit" value="click me!" name="clicks2">
</form>
<div>Click Count: <?php echo getClickCount(); ?></div>

if( isset($_POST['clicks']) ) { 
    incrementClickCount("button1");
}
if( isset($_POST['clicks2']))
{
    incrementClickCount("button2");
}

function incrementClickCount($button)
{
if($button == "button1")
{
    $count = getClickCount() + 1;
    file_put_contents("clickit.txt", $count);
}
elseif($button = "button2")
{
 // other counter
}

}

0
投票

你必须使用会话。如果尚未初始化,请先设置会话变量初始值 1。初始化后,从第二次点击开始,每次点击都会+1,因为它会满足else语句

<?php
session_start();
?>
<html>
    <head></head>
    <body>
        <form method="post" action="submit.php">
            <input type="submit" name="count" value="Start counting" />
        </form>
        <?php
        if(isset($_POST['count'])){
            if(!($_SESSION['count'])){
                $_SESSION['count'] = 1;
            }else{
                $count = $_SESSION['count'] + 1;
                $_SESSION['count'] = $count;
            }
        }
        echo $_SESSION['count'];
        ?>
    </body>
</html>

0
投票

将按钮文件保存为 css 文件,内容如下: “按钮”、“值” 1,0 2,0 3,0 4,0 PHP 读取函数会在回车时爆炸,然后使用 for-each 循环遍历数据并在逗号处爆炸。 PHP write 函数只会用更新后的值重建表。十分简单。如果您想在 52 次迭代中进行硬编码,您也可以使用常规的 for 循环。

© www.soinside.com 2019 - 2024. All rights reserved.