2012-04-11 5 views
1

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') 
        "); 
+0

Немного не по теме, но есть ли причина, по которой вы не захотите также проверить IP-адрес? Я просто думаю, что [захват сеанса] (http://en.wikipedia.org/wiki/Session_hijacking) исчезнет, ​​если вы просто обновите столбец 'view', не проверив, что он пришел из одного и того же IP-адреса. – beny23

ответ

1

Сделать url,session пара уникальна и использовать ON DUPLICATE KEY пункт

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

Поскольку сеансы используются повторно, возможно, другому пользователю из другого IP может быть назначен один и тот же sessionid, поэтому я бы включил IP в уникальный ключ. – Wige

+0

@ Сеансы в формате WEE должны быть уникальными. Независимо от ip – safarov

+0

Это не очень хорошая идея, теперь сессия уникальна и url, и когда u перейдите на другой URL-адрес, в новой базе данных нет новой записи, простую будет обновляться первой, потому что сеанс такой же ... –

0

Я бы запросил последнюю вставку для этой сессии, а затем проверьте, не изменился ли URL-адрес.

If (changed) update; 
Else insert; 
0

Я хотел бы создать уникальный индекс на столбцах IP, URL и сессии, а затем делать вставки ... на дубликат ключа:

INSERT INTO page_view(ip,url,referer,session,view) 
VALUES ('".$ip."','".$url."','".referer."','".$session."','1') 
ON DUPLICATE KEY UPDATE view = view + '1'"); 
Смежные вопросы