Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miksei toimi?

nixu89 [25.10.2005 20:28:28]

#

Olen pähkäillyt jo pitkään, miksei kyseinen koodi toimi niin kuin pitäisi, vaikka mielestäni sen pitäisi toimia:

kopioi; pituusrajoitus; rivinumerot

<?php

// IP:n nouto
function getip() {

	if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {
	    $ip = getenv("HTTP_CLIENT_IP");
	}
	else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {
	    $ip = getenv("HTTP_X_FORWARDED_FOR");
	}
	else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {
	    $ip = getenv("REMOTE_ADDR");
	}
	else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {
	    $ip = $_SERVER['REMOTE_ADDR'];
	}
	else {
	    $ip = "unknown";
	}

	return($ip);

}

$lines = file("laskuri/data.dat");
$lines2 = file("laskuri/ipt.dat");

// Lataukset
$numero = $lines[0]+1;

// Uniikit
$unikipt = array();
for ($q = 0; $q < count($lines2); $q++) {
	list(,,,,,$getip) = explode("|", $lines2[$q]);
    array_push($unikipt, $getip);
}
$getip = getip();
if (!in_array("$getip", $unikipt)) {
	$numero2 = $lines[1]+1;
    $fp = fopen ("laskuri/ipt.dat", "a+");
	fwrite ($fp, time()."|".@$_SERVER['HTTP_REFERER']."|".$_SERVER['HTTP_HOST']."|".$_SERVER['HTTP_USER_AGENT']."|".$_SERVER['SERVER_PROTOCOL']."|".getip()."\n");
	fclose ($fp);
}
else {
	$numero2 = $lines[1];
}

// Kirjoitetaan uudet luvut
$fp = fopen ("laskuri/data.dat", "w+");
fwrite ($fp, ltrim("$numero\n$numero2"));
fclose ($fp);

?>

Juu, eli koodi kirjoittaa kahta tiedostoa, toiseen uniikkien kävijöiden ip:t, ja toiseen sitten luvut, sivulataukset ja uniikit.
Nyt ongelmana on se, että pätkän ei pitäisi lisätä tiedostoon ip-tietoja, jos kyseinen ip jo tietokannasta löytyy. Mutta lisääpä silti, vaikka löytyy sama ip...

Mazuli [25.10.2005 20:43:53]

#

kokeile vaihtaa kohta

kopioi

list(,,,,,$getip) = explode("|", $lines2[$q]);

muotoon

kopioi

list(,,,,,$getip) = explode("|", trim($lines2[$q]));

jgz [25.10.2005 20:56:27]

#

niin ja eikös tuota pitäisi muokata hieman?

kopioi

if (!in_array("$getip", $unikipt)) {

nixu89 [25.10.2005 21:37:19]

#

Juu, tuolla Mazulin vinkillä sain toimimaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta