我所拥有的:
<body>
<a href="'.$a.'">'.$name_a.'</a>
<a href="'.$b.'">'.$name_b.'</a>
<a href="'.$c.'">'.$name_c.'</a>
</body>
a,b,c是外部链接,例如spotify / youtube或其他任何链接。我想检查“用户喜欢什么”。 我从mysql表中获取链接。我的想法是在mysql表中添加列以获得此方案
| links | counters for each links |
| | |
| | |
| | |
但是似乎没有那么优化。 此外,当单击链接时,我不知道如何调用php函数将+1添加到计数器。有任何想法吗?其他更有效的策略?谢谢!
答案 0 :(得分:3)
这是2个部分:代码和数据
您有两种流行的选择:AJAX或重定向。
使用AJAX,您基本上可以拦截用户的点击并将数据(单击了链接,用户会话等)发送到您的服务器,然后在收到服务器的响应或超时(以防服务器出现故障)后让用户继续继续太慢或失败)。
使用重定向跟踪器,您基本上在链接的前面有一个url /文件,因此您可以在重定向到实际URL之前运行一些服务器代码。像这样:
https://<your-website>.com/tracker.php?url=<original-url>
如果要使其非常简单,可以只增加数据库中访问时被跟踪的每个链接的列。
如果您想要有关用户访问的更多数据(例如IP,会话等),则上述内容非常有限,因此另一种选择是使用相关表来存储链接的ID和其他用户数据/时间戳。
答案 1 :(得分:1)
首先,您应该像这样设置表
+---------------+ +-------------------------+
| CLICKS | | LINKS |
+------+--------+ +------+------------------+
| ID | LINKID | | ID | LINK |
+------+--------+ +------+------------------+
| 1 | 12 | | 12 + http://link.com |
+ -----+--------+ + -----+------------------+
然后,您可以执行count(*),其中ID = linkid以获得点击计数。如果需要的话,它更容易检查用户是否已经单击等。只需添加另一列并跟踪ip等。在添加点击时,您可以通过一个简单的ajax请求来完成。像下面这样。
<body>
<a href="'.$a.'" onclick='addClick(12);'>'.$name_a.'</a>
<a href="'.$b.'" onclick='addClick(13);'>'.$name_b.'</a>
<a href="'.$c.'" onclick='addClick(14);'>'.$name_c.'</a>
</body>
function addClick(id) {
let linkId = id;
$.ajax({
method: "POST",
url: "addClick.php",
data: {
"linkId": linkId,
},
success() {
// Update your page count here
},
});
}
<?php
if(isset($_POST['linkId']) {
// Mysql query
}
?>