Php 更新页面视图

Php 更新页面视图,php,mysql,Php,Mysql,Im创建此代码以在数据库中存储页面视图,但我现在无法更新行 我需要检查会话和url是否与我需要的更新行视图相同。。这是代码 $ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']); $browser = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']); $referer = mysql_real_escape_string($_SERVER['HTTP_REFERER']); $u

Im创建此代码以在数据库中存储页面视图,但我现在无法更新行

我需要检查会话和url是否与我需要的更新行视图相同。。这是代码

$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);
$browser = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);
$referer = mysql_real_escape_string($_SERVER['HTTP_REFERER']);
$url = mysql_real_escape_string($_SERVER['REQUEST_URI']);
$session = session_id();


mysql_query("   INSERT INTO page_view(ip,url,referer,session,view) 
                    VALUES (
                    '".$ip."',
                    '".$url."',
                    '".$referer."',
                    '".$session."',
                    '1')
                    ");

我将查询该会话的最后一次插入,然后检查url是否更改

If (changed) update;
Else insert;

我将查询该会话的最后一次插入,然后检查url是否更改

If (changed) update;
Else insert;

使
url,session
对唯一并使用子句


使
url,session
对唯一并使用子句


我会在ip、url和session列上创建一个唯一的索引,然后插入。。。在重复密钥上:

INSERT INTO page_view(ip,url,referer,session,view)
VALUES ('".$ip."','".$url."','".referer."','".$session."','1')
ON DUPLICATE KEY UPDATE view = view + '1'");

我会在ip、url和session列上创建一个唯一的索引,然后插入。。。在重复密钥上:

INSERT INTO page_view(ip,url,referer,session,view)
VALUES ('".$ip."','".$url."','".referer."','".$session."','1')
ON DUPLICATE KEY UPDATE view = view + '1'");

因为sessionid是重复使用的,所以来自另一个IP的另一个用户可能会被分配相同的sessionid,所以我也会将该IP包含在唯一密钥中。这不是个好主意,现在会话也是唯一的,url和当你们转到另一个url时,数据库中并没有新的记录,因为会话是相同的…@DraganA。Session_id必须是唯一的,这意味着在mysql中不能作为列索引。我的意思是,作为一个php会话,用户必须是唯一的。在mysql表
会话中,url
作为一对是唯一的。没有必要将ip添加为uniq@safarov会话是并发唯一的,而不是永久唯一的。当我访问某个网站时,该网站会生成一个随机会话id,并根据当前活动id的列表进行检查,以确保当前未使用该id。没有维护(通常)过去会话ID的历史记录。未来用户有可能(尽管在小型站点上不一定如此)被分配相同的会话id。@wige过期会话过载的可能性非常低。所以ip地址也是动态的。但是是的,你可以添加
ip,session,url
作为uniq来更加确定。因为sessionid是重复使用的,可能来自另一个ip的另一个用户可以被分配相同的sessionid,所以我也会将该ip包含在唯一密钥中。这不是个好主意,现在会话也是唯一的,url和当你们转到另一个url时,数据库中并没有新的记录,因为会话是相同的…@DraganA。Session_id必须是唯一的,这意味着在mysql中不能作为列索引。我的意思是,作为一个php会话,用户必须是唯一的。在mysql表
会话中,url
作为一对是唯一的。没有必要将ip添加为uniq@safarov会话是并发唯一的,而不是永久唯一的。当我访问某个网站时,该网站会生成一个随机会话id,并根据当前活动id的列表进行检查,以确保当前未使用该id。没有维护(通常)过去会话ID的历史记录。未来用户有可能(尽管在小型站点上不一定如此)被分配相同的会话id。@wige过期会话过载的可能性非常低。所以ip地址也是动态的。但是可以,你可以添加
ip,session,url
作为uniq来更确定。有点离题,但是有没有理由你不想检查ip地址呢?我只是在想,如果你只是更新
视图
列,而不检查它是否来自同一个IP,那么它将不会被检测到。这有点离题,但有没有理由不想检查IP地址呢?我只是想,如果你只是更新
视图
列,而不检查它是否来自同一个IP,那么它就不会被检测到。