Php 点击计数器
我有一个.php脚本,它计算按钮的点击次数,并将其放入一个.txt文件中,在这里一切正常,但我现在的脚本只对一次计数有效。比如说,如果我做了两个按钮,它将显示两个按钮相同的点击次数 我需要脚本分别为每个按钮工作 PHP: HTML:Php 点击计数器,php,button,counter,Php,Button,Counter,我有一个.php脚本,它计算按钮的点击次数,并将其放入一个.txt文件中,在这里一切正常,但我现在的脚本只对一次计数有效。比如说,如果我做了两个按钮,它将显示两个按钮相同的点击次数 我需要脚本分别为每个按钮工作 PHP: HTML: 您可以给第二个按钮另一个名称,并将数据保存到另一个文件中吗 另一种可能是使用例如分解和内爆将所有按钮信息保存在同一文件中 [编辑:示例] if( isset($_POST['clicks'])&& isset($_POST['buttonnumber
您可以给第二个按钮另一个名称,并将数据保存到另一个文件中吗
另一种可能是使用例如分解
和内爆
将所有按钮信息保存在同一文件中
[编辑:示例]
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));
}
我认为你应该尝试不同的方法。首先,在文件中保存单击比在数据库中保存要慢,所以您应该使用数据库而不是文件
然后,您可以创建一个表,其中包含按钮\u id
字段和相应的单击\u number
字段。因此,如果单击了带有id=“1”
的按钮,则您可以增加该按钮的单击数值。如果两个按钮调用相同的功能:
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
}
}
您必须使用会话。如果会话变量尚未初始化,则首先将其初始值设置为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>
我们不能只使用一个全局变量,而不是将点击次数写入一个文件中吗?全局变量不起作用,因为它只存在于同一个请求中,因此多个请求不会更新该数字。事实上,使用数据库比使用txt文件更好。提问者应该考虑使用数据库。好吧,我想我别无选择,只能为我的函数使用数据库。我想将点击计数器存储在root.txt文件中,因为在不久的将来,我需要创建一个离线应用程序,将这些点击放入图表中。如果你真的想改进你的脚本,你必须在JS中计算clics,然后将其存储。使用PHP实现这一点是荒谬的,我认为这是一种类练习。@eagle1好吧,这是一种练习,因为我是PHP新手,我可以在JS中完成,因为我与前端开发人员一起使用,然后存储它,但我想用PHP创建整个函数,以掌握诀窍并理解其中的差异。这只是我的学习方式。感谢您的贡献。由于我将有两个以上的按钮(估计52个),并且在root.txt文件中保存数据的速度较慢,因此我不认为给按钮另一个名称并将其保存在另一个文件中是最好的解决方案。52按钮=52.txt文件=>服务器背后的痛苦。老实说,我不太清楚使用内爆/爆炸是如何工作的。有关内爆/爆炸的示例,请参阅我的更新。在这里,点击数据存储到文本文件中,用“:”分隔。测试时,请记住首先将计数器设置为零,方法是将文件内容设置为“0:0:0”(计数器的数量随您的需要而定)。好的,我已经按照前面提到的做了,但由于某些原因,计数器不会启动。我确实将文件的内容设置为0:0(目前只测试了两个)。请记住,索引从0开始,并且我更改了post变量(clicks和buttonnumber),因此必须确保调用函数incrementClickCount
。这里,它使用递增的ClickCount(1)!
<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
}
}
<?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>