Permalänk
Medlem
Skrivet av csmannen:

Jag får då "Undefined index: Ip" på rad 22. Vilka fält ska man ha för att det här ska fungera? Det jag tycker känns logiskt är id, ip, unix/date. Vad har du?

Jag har ID, Ip, Time (i unix) och Date (vanligt). Kom ihåg att du måste ha rätt på både små och stora bokstäver!

Permalänk
Medlem

Glöm inte att använd 'limit 1' när du bara ska kolla ett värde från SQL så slipper databasen kolla igenom alla rader när värdet redan har hittats från tabellen.

Visa signatur
Permalänk
Medlem
Skrivet av kobb3:

Jag har ID, Ip, Time (i unix) och Date (vanligt). Kom ihåg att du måste ha rätt på både små och stora bokstäver!

Har du testat ditt script? Fungerar det?

Jag får: "Undefined variable: Ip_store in" och då har jag ändå exakt samma databas tabell som du, hm.

Permalänk
Medlem

ska det inte vara '.$ip_first.' men det kanske går att skriva '$ip_first'

Visa signatur
Permalänk
Medlem

Tror den fungerar, jag får i alla fall inget error.

Skulle kolla men verkar som att min sida är nere -.-

Permalänk
Medlem
Skrivet av XzaR:

ska det inte vara '.$ip_first.' men det kanske går att skriva '$ip_first'

Skrivet av kobb3:

Tror den fungerar, jag får i alla fall inget error.

Skulle kolla men verkar som att min sida är nere -.-

Jag får det fortfarande inte att funka. Undra vad f*n det kan vara?

Permalänk
Medlem

Jag ser felet men har fortfarande inte artificiell intelligens så någon annan människa med det får hjälpa dig.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

<?php date_default_timezone_set("Europe/Stockholm"); session_start(); if(isset($_SESSION['client_ip'])) { $client_ip = $_SESSION['client_ip']; } else { //connect.php ??? $client_ip = $_SERVER['REMOTE_ADDR']; $_SESSION['client_ip'] = $client_ip; $query_connections = mysql_query("SELECT id FROM connections WHERE ip='".ip2long($client_ip)."' limit 1"); $numrows_ip = mysql_num_rows($query_connections); if($numrows_ip == 0) { //date format: Thu, 21 Dec 2000 16:01:07 +0200 //table (int)id primary auto incr..,(varchar[32])date,(int) time mysql_query("INSERT INTO connections VALUES ('".ip2long($client_ip)."','".date("r")."','".time()."')") or die(mysql_errno().": ".mysql_error()); } } ?>

Visa signatur
Permalänk
Medlem
Skrivet av iXam:

"111.111.111.111" som en sträng är 15 bytes.
1869573999 som är samma som ovanstående IP-adress är 4 bytes om man lagrar det som ett numretiskt värde (int unsigned i MySQL).

Jag och väldigt många betraktar lagringsutrymme för text som ett icke-problem och det man tjänar på att det hämtas fortare från databasen förloras lätt i att man måste omformatera datan(och skriva kod för det!). Därför skulle jag vilja påstå att det bästa formatet i det här fallet är det som används mest och i hans fall är det nog strängvarianten. Ibland är det bättre med lätttillgänglighet än skalbarhet!

Visa signatur

Into the Web Browser for iPhone, http://www.intothewebbrowser.com/

Permalänk
Medlem
Skrivet av oggee:

Jag och väldigt många betraktar lagringsutrymme för text som ett icke-problem och det man tjänar på att det hämtas fortare från databasen förloras lätt i att man måste omformatera datan(och skriva kod för det!). Därför skulle jag vilja påstå att det bästa formatet i det här fallet är det som används mest och i hans fall är det nog strängvarianten. Ibland är det bättre med lätttillgänglighet än skalbarhet!

Det du kallar för lättillgänglighet är ju bara baserad på utvecklarens okunskap och du kan ju knappast förespråka okunnighet. Och det finns ingenting man förlorar på att omvandla datan när från sträng till ett 32-bitars nummer (vi snackar liksom om EN rad kod antingen i SQL eller PHP). Jag har ca en miljard rader IP-nummerdata i min databas till en tjänst jag har och skulle jag ha sparat det som strängar så hade min datamängd varit typ 10ggr större.

Permalänk
Medlem

<?php date_default_timezone_set("Europe/Stockholm"); session_start(); if(empty($_SESSION['ip_registered'])) { $ip = ip2long($_SERVER['REMOTE_ADDR']); $_SESSION['ip_registered'] = 1; $query_connections = mysql_query("SELECT id FROM connections WHERE ip='".$ip."' limit 1"); $numrows_ip = mysql_num_rows($query_connections); if($numrows_ip == 0) { //date format: Thu, 21 Dec 2000 16:01:07 +0200 //table (int)id primary auto incr..,(int)ip,(varchar)date[32],(int) time mysql_query("INSERT INTO connections VALUES ('".$ip."','".date("r")."','".time()."')") or die(mysql_errno().": ".mysql_error()); } } ?>

bättre?

Visa signatur
Permalänk
Medlem
Skrivet av XzaR:

<?php date_default_timezone_set("Europe/Stockholm"); session_start(); if(empty($_SESSION['ip_registered'])) { $ip = ip2long($_SERVER['REMOTE_ADDR']); $_SESSION['ip_registered'] = 1; $query_connections = mysql_query("SELECT id FROM connections WHERE ip='".$ip."' limit 1"); $numrows_ip = mysql_num_rows($query_connections); if($numrows_ip == 0) { //date format: Thu, 21 Dec 2000 16:01:07 +0200 //table (int)id primary auto incr..,(int)ip,(varchar)date[32],(int) time mysql_query("INSERT INTO connections VALUES ('".$ip."','".date("r")."','".time()."')") or die(mysql_errno().": ".mysql_error()); } } ?>

bättre?

Jag får nu inget error, men inget i databasen heller...

Permalänk
Medlem

Har du den här tabellen?

CREATE TABLE IF NOT EXISTS `connections` ( `id` bigint(21) NOT NULL AUTO_INCREMENT, `ip` int(32) NOT NULL, `date` varchar(32) NOT NULL, `time` int(6) NOT NULL, PRIMARY KEY (`id`) );

Visa signatur
Permalänk
Medlem
Skrivet av XzaR:

Har du den här tabellen?

CREATE TABLE IF NOT EXISTS `connections` ( `id` bigint(21) NOT NULL AUTO_INCREMENT, `ip` int(32) NOT NULL, `date` varchar(32) NOT NULL, `time` int(6) NOT NULL, PRIMARY KEY (`id`) );

Japp, inget händer tyvärr. Dock vill jag fråga en annan sak, vad är skillnaden på INT och BIGINT?

Permalänk
Medlem
Skrivet av csmannen:

Japp, inget händer tyvärr. Dock vill jag fråga en annan sak, vad är skillnaden på INT och BIGINT?

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

Permalänk
Medlem

Ändra till:

mysql_query("INSERT INTO connections (`ip`,`date`,`time`) VALUES ('".$ip."','".date("r")."','".time()."')") or die(mysql_errno().": ".mysql_error());

Om du håller på att utveckla sidor bör du ändra error_reporting i din php.ini till "error_reporting = E_ALL | E_STRICT".

Visa signatur
Permalänk

Har för mig att det är mot lagen att lagra ip-adresser utan medgivande. Kika här: http://www.dan.se/ipred-lagen-gor-ip-adresser-till-personuppg...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Inaktiv
Skrivet av KurreKula:

Har för mig att det är mot lagen att lagra ip-adresser utan medgivande. Kika här: http://www.dan.se/ipred-lagen-gor-ip-adresser-till-personuppg...

Jobbigt då tex. Apache installationer ofta loggar alla requests med IP.

Permalänk
Skrivet av anon150287:

Jobbigt då tex. Apache installationer ofta loggar alla requests med IP.

Mjo. Det är väl lätt hänt att man råkar använda cookies utan att informera om det också...

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase