/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
IP-logger, hvad er der galt ?
Fra : Jakob Munck


Dato : 24-07-07 11:01

Jeg har lavet en ip-logger til en af mine websites sådan at jeg kan se
ip-nummeret på dem, som downloader filer fra min site (www.auro.dk). Men der
er noget galt, for den logger kun min egen ip, når jeg tester den. Andre
gæster kan den ikke finde ip-adressen på, eller også kan den i hvert fald
ikke lægge den i databasen. Bortset fra den manglende ip-logning virker den
udmærket, den lægger altså navnet på de downloadede filer i en database. Men
ip-nummeret mangler.

Koden er sådan:

<?php ob_start();
include "database.inc.php";

$titel = $_GET["titel"];
$dato_tid = date("Y-m-d G:i:s", time());
$ip_nummer = $_SERVER['REMOTE_ADDR'];

mysql_query("INSERT INTO audownloads (titel, ip_nummer, dato_tid) VALUES
('$titel','$ip_nummer', '$dato_tid')") or die(mysql_error());

header("Location: webboeger/" . "$titel");
ob_end_flush();
?>

Kan du finde nogen fejl?

v.h.
Jakob



 
 
Birger (24-07-2007)
Kommentar
Fra : Birger


Dato : 24-07-07 13:11

"Jakob Munck" <jm2_fjern_dette@webspeed.dk> skrev i en meddelelse
news:46a5cdde$0$77404$edfadb0f@dread12.news.tele.dk...
snip snip
> $ip_nummer = $_SERVER['REMOTE_ADDR'];

Jeg bruger
$Ipa = getenv( "REMOTE_ADDR");

og det virker...

Birger



Bertel Lund Hansen (24-07-2007)
Kommentar
Fra : Bertel Lund Hansen


Dato : 24-07-07 13:42

Birger skrev:

>> $ip_nummer = $_SERVER['REMOTE_ADDR'];

> Jeg bruger
> $Ipa = getenv( "REMOTE_ADDR");

> og det virker...

Jeg bruger den øverste linje, og det virker.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Birger (24-07-2007)
Kommentar
Fra : Birger


Dato : 24-07-07 14:33

"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev i en meddelelse
news:e85ro122f2sw.fzjiis0uebhh$.dlg@40tude.net...

>>> $ip_nummer = $_SERVER['REMOTE_ADDR'];
>> $Ipa = getenv( "REMOTE_ADDR");

Man kunne også bruge
$Ipa = $_ENV['REMOTE_ADDR'];

Og jeg vil gætte på at ingen af dem gør som forventet...


fra
http://www.php.net/manual/da/function.getenv.php
----------
// Example use of getenv()
$ip = getenv('REMOTE_ADDR');
// Or simply use a Superglobal ($_SERVER or $_ENV)
$ip = $_SERVER['REMOTE_ADDR'];
----------
og fra
http://www.php.net/manual/da/reserved.variables.php
----------
Server variables: $_SERVER
bemærk: Introduced in 4.1.0. In earlier versions, use $HTTP_SERVER_VARS.
$_SERVER is an array containing information such as headers, paths, and
script locations. The entries in this array are created by the web server.
There is no guarantee that every web server will provide any of these;
servers may omit some, or provide others not listed here. That said, a large
number of these variables are accounted for in the » CGI 1.1 specification,
so you should be able to expect those.
----------

Som jeg ser det, er der enten noget galt på Jacobs server - eller der er
tale om en PHP version < 4.1
REMOTE_ADDR er del af CGI 1.1, så det er vel tilladeligt at forvente den er
tilgængelig - men jeg tror ikke andre end Jacobs host vil kunne give et
præcist svar...

Birger



Martin (24-07-2007)
Kommentar
Fra : Martin


Dato : 24-07-07 14:17

Jakob Munck wrote:
> Jeg har lavet en ip-logger til en af mine websites sådan at jeg kan se
> ip-nummeret på dem, som downloader filer fra min site (www.auro.dk). Men der
> er noget galt, for den logger kun min egen ip, når jeg tester den. Andre
> gæster kan den ikke finde ip-adressen på, eller også kan den i hvert fald
> ikke lægge den i databasen. Bortset fra den manglende ip-logning virker den
> udmærket, den lægger altså navnet på de downloadede filer i en database. Men
> ip-nummeret mangler.
>
> Koden er sådan:
>
> <?php ob_start();
> include "database.inc.php";
>
> $titel = $_GET["titel"];
> $dato_tid = date("Y-m-d G:i:s", time());
> $ip_nummer = $_SERVER['REMOTE_ADDR'];
>
> mysql_query("INSERT INTO audownloads (titel, ip_nummer, dato_tid) VALUES
> ('$titel','$ip_nummer', '$dato_tid')") or die(mysql_error());

Tjek lige $ip_nummer inden du din query...
Kunne være du har sat din egen ip adresse som default i ip_nummer
kolonnen, og hvis ip_nummer er tomt, ja så kommer default ip_nummer til
at stå der istedet.

PS:
$_SERVER['REMOTE_ADDR'] virker skam ganske glimragende...

Du kan evt også lave en side kun med følgende indhold

<?php
echo phpinfo();
?>

Smid den op, og bed en ven om at kopiere teksten til dig - så kan du
måske opdage noget sjovt :)

PPS:
IP adresser ligner MEEEGET hinanden, især hvis man har samme udbyder -
så er du HELT sikker på det nu også ER din egen der står der?

Søg
Reklame
Statistik
Spørgsmål : 177461
Tips : 31964
Nyheder : 719565
Indlæg : 6408207
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste