使用mysql和php的Viewcount
我有一个带有下拉菜单的表单,它有不同类型的电影,下面是代码: 现在是这样的,当用户第一次进入所说的表单时,我存储他们的ip(存储方式不需要超级安全,所以这就是我这样做的原因) 这就是为什么当更新查询成功执行时,我会再次存储该ip。 更新what does serve有我的视图数,因此我可以知道特定类型的点击次数,但代码的工作方式现在变得毫无用处,因为一个用户可以在一个类型上点击5000万次,这将计算它们。 我想做的是比较第一个ip和第二个ip,如果ip是相同的,做一个查询,减去1到该类型,所以只添加1 这就是我尝试过的使用mysql和php的Viewcount,php,mysql,hitcounter,Php,Mysql,Hitcounter,我有一个带有下拉菜单的表单,它有不同类型的电影,下面是代码: 现在是这样的,当用户第一次进入所说的表单时,我存储他们的ip(存储方式不需要超级安全,所以这就是我这样做的原因) 这就是为什么当更新查询成功执行时,我会再次存储该ip。 更新what does serve有我的视图数,因此我可以知道特定类型的点击次数,但代码的工作方式现在变得毫无用处,因为一个用户可以在一个类型上点击5000万次,这将计算它们。 我想做的是比较第一个ip和第二个ip,如果ip是相同的,做一个查询,减去1到该类型,所以
$contador=$contador+1;
if (isset($_POST['genero'])) {
$genero=$_POST['genero'];
$sql = "UPDATE generos SET visitas=visitas+1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {
$ip2 = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']);
} else {echo "Error sumando visita: " . $conn->error;}
if ($contador>1) {
if ($ip2==$ip){
$sql = "UPDATE generos SET visitas=visitas-1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {}
}
}
然后我用isset做了类似的尝试,检查第一次更新是否已经完成
if (isset($ip2) and ($ip==$ip2)) {
$sql = "UPDATE generos SET visitas=visitas-1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {}}
但实际情况是,这个数字保持不变,因为它加1减1试图通过查看他们的IP来跟踪访问者的数量不是一个好主意:
- IP太多,无法跟踪它们,例如,对于IP V6,将有340282366920938463463374607431768211456个不同的IP
- 访客的IP可能会随时间而变化。例如,每次新连接时,我的IP都会发生变化。具体的IP由我的ISP选择
session_start();
...
// form has been submitted && session value has not been set
if (isset($_POST['genero']) && !isset($_SESSION[$_POST['genero']]) ) {
// We have a new visitor
// 1. update DB
// 2. Set cookie value
$_SEESION[$_POST['genero']] = true;
}
我希望这能让您对这个问题有一个新的看法。好的,向我们展示您为实现所需功能所做的尝试。请编辑您的问题并将代码包含在其中,在注释中阅读代码,这几乎是不可能的。尝试过,使用计数器,当它为1时,因此已经有更新,然后控制ip地址,如果它是相同的,那么减去一,这样它就不会一直增加。是的,我明白你的意思,我必须找到一种方法,在已经打开的会话中使用它(识别系统中的用户)
$contador=$contador+1;
if (isset($_POST['genero'])) {
$genero=$_POST['genero'];
$sql = "UPDATE generos SET visitas=visitas+1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {
$ip2 = $_SERVER['REMOTE_ADDR']?:($_SERVER['HTTP_X_FORWARDED_FOR']?:$_SERVER['HTTP_CLIENT_IP']);
} else {echo "Error sumando visita: " . $conn->error;}
if ($contador>1) {
if ($ip2==$ip){
$sql = "UPDATE generos SET visitas=visitas-1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {}
}
}
if (isset($ip2) and ($ip==$ip2)) {
$sql = "UPDATE generos SET visitas=visitas-1 where nombre='$genero'";
if ($conn->query($sql) === TRUE) {}}
session_start();
...
// form has been submitted && session value has not been set
if (isset($_POST['genero']) && !isset($_SESSION[$_POST['genero']]) ) {
// We have a new visitor
// 1. update DB
// 2. Set cookie value
$_SEESION[$_POST['genero']] = true;
}