2012-04-11 7 views
1

Im erstellen, um diese Codepage Ansicht in der Datenbank zu speichern, aber ich habe Problem jetzt zu aktualisieren Reihe ...Update-Seite Ansicht

Ich muß überprüfen, ob Sitzung und url gleiche ist als i-Update Reihe Ansicht benötigen .. Hier ist Code

$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

Etwas off-topic, aber gibt es einen Grund, warum Sie die IP-Adresse auch nicht überprüfen möchten? Ich denke nur, dass [Session-Hijacking] (http://en.wikipedia.org/wiki/Session_hijacking) unentdeckt bleiben würde, wenn Sie nur die 'view'-Spalte aktualisieren, ohne zu überprüfen, ob sie von derselben IP stammt. – beny23

Antwort

1

Machen url,session Paar einzigartig und verwenden ON DUPLICATE KEY Klausel

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

Da sessionids wiederverwendet werden, ist es möglich, dass einem anderen Benutzer von einer anderen IP dieselbe Sitzungs-ID zugewiesen wird, also würde ich die IP auch in den eindeutigen Schlüssel aufnehmen. – Wige

+0

@Wige Sitzungen sollten eindeutig sein. Unabhängig von ip – safarov

+0

Es ist keine gute Idee, jetzt Sitzung ist auch einzigartig und URL und wenn Sie auf andere URL gehen, gibt es keinen neuen Datensatz in der Datenbank einfach wird zuerst aktualisiert, weil Sitzung ist gleich ... –

0

Ich würde die letzte einfügen für diese Sitzung abfragen, dann überprüfen, ob die URL geändert.

If (changed) update; 
Else insert; 
0

ich einen eindeutigen Index für die Spalten ip, URL und Sitzungs schaffen würde, dann ein Insert tun ... auf doppelten Schlüssel:

Verwandte Themen