我正在尝试创建一个 PHP 触发器,当用户查看我网站上的某些页面时,它将更新点部分中的用户表。
我知道这个过程会像这样
on page view > update user > where user id is (**get username from session**) > add 5 to points row
任何人都知道如何设置这样简单的东西来为用户提供查看页面的简单点?
我的网站使用 PHP 和 mySQL 作为数据库。
使用 cookie 或会话变量来跟踪用户详细信息,例如用户名或 ID。因此,制作页面浏览触发器就像在每个页面的顶部添加一个 mysql 查询一样简单,该查询将更新数据库表以获取视图。有点像论坛的运作方式。
例如
<?php
session_start();
$db_connection = mysqli_connect('host','username','password','db');
$user_id = $_SESSION['userid']; //That is asssuming that you had gotten the user id on login
mysqli_query($db_connection, 'UPDATE page_views SET views_column=views_column+1 WHERE userid=$user_id');
?>
是的,您可以执行以下操作(如果您拥有用户必须访问的页面):
<?php
$pointsForThisSite = 5;
include "points_adder.php";
?>
当 Points_adder 查看 $pointsForThisSite 是否已定义且 > 0 时,然后按照您的描述将点添加到数据库中。
那是你要找的吗?
创建一个 php 函数并在用户每次进入页面时调用它。您不需要 mysql 触发器,因为该操作位于网页上。
function add_points($user, $page){
//If users visits too many maybe you don't want to gave him some points.
//add points
}
并调用您要评分的页面中的函数
最不显眼的方法是在页面加载后使用 AJAX 调用。调用应该是一个包含文件,该文件执行数据库更新操作并返回 204 响应,以便访问者的浏览器不会等待响应内容。
对于 Apache 服务器;
header('HTTP/1.0 204 无内容');
header('Content-Length: 0', true);
header('Content-Type: text/html', true);
冲洗();
// 在这里更新表