Autor Zpráva
sonix
Profil
V souboru mam uložené IP adresy oddělené novým řádkem a potřebuju poradit, jak mam z toho souboru dostat jen tu jednu IP, se kterou přišel uživatel a porovnat jí s tou adresou v tom souboru. mám něco takového:

$fp1=fopen($souborip, "r");
$roztrhej=fread($fp1, filesize($souborip));
$ipadresy=explode("\n", $roztrhej);
fclose($fp1);

for($i=0; $i<=count($ipadresy); $i++){
if($ipadresy[$i]!=$ipnavstevnika){
echo "uživatel byl už zopíčítán";
}
}

Jenže to mi nefunguje.. nevím co je na tomhle scriptu spatne..
-otevřu soubor se zapsanýma IP návštěvníků, kteří byli už někdy na stránce
-rozdelim ten textovy retezec IP adresach
-a budu testovat, jestli se ta adresa z toho souboru rovná té adrese, se kterou prisel navstevnik
-když v tom souboru neni tak vytisknu ze byl zapocitan

Neví někdo, jak projít to pole, kde mam ty IP ze souboru a porovnat ji s tou od navstevnika?
krteczek
Profil
protože jsem nedávno jedno takové řešení dělal tu je velká část kodu, práce s array je rychlejší, navíc jednodužší. Serialize slouží ke konverzi array do textové podoby...
Není to ale dobré řešení, data patří do databáze, ne do souboru, s každou další návštěvou hrozí ztráta báze poškozením mezi čtením a zápisem souboru, databáze je proti tomuhle imunní
<?php
# soubor s  ip adresami
$fs = "anketa_subory/ip.txt";

# zjistíme, jestli existuje, pokud ne, tak ho vytvoříme, 
# a uložíme do něj serializovanou array

if(!file_exists($fs))
	{
		file_put_contents($fs, serialize(array()));
	}

# vytáhneme data ze souboru
$ipArray = unserialize(file_get_contents($fs));

# zjistíme, jestli aktuální ip adresa je již v bázi
if(in_array($_SERVER['REMOTE_ADDR'], $ipArray))
	{
		# jo je
		echo 'už jste tu nejspíš byl';
	}
else
	{
		# Není, přidáme do array novou položku a uložíme
		$ipArray[] = $_SERVER['REMOTE_ADDR'];
		file_put_contents($fs, serialize($ipArray));
	}
?>
sonix
Profil
Tak to by jsme měli. :) dik za radu uz to frci :) ale když jsem tu četl, že je lepší DB pro počítadlo, tak jsem se chtěl zeptat, jak udělat , aby počítadlo počítalo přístupy za den, za týden a za měsíc ?? třeba postupem s využitím DB.
Keeehi
Profil *
1) U toho prvního nemůžš u explode používat \n, prosě to nefunguje. Můžeš požít na konci třeba hvězdičku a tu pak hledat, jnak je ten kód snad v pořádku

2) Když návštěvník vstoupí na stránky, uloží se do DB ipadresa a vedle datum. Z databáze pak jen vybereš a spočteš adresy které mají třeba včerejší datum
sonix
Profil
jo taak :) diky za odpoved
sonix
Profil
Ted jsem zkousel uděla to počítadlo přes tu databázi. Povedl se mi jen celkový přístup... Teď pracuju na tom, aby to podle včerejšího datumu vypsalo přístupy za včerejšek. Jenže to nevím, jak to udělám. Jak se dá zjistit včerejší datum?

$datumvcera = date("d")-1;

U téhle konstrukce si nejsem jist jestli bdue 100% funkční... A hlavně to nezjistí, když bude třeba 1.2. mezi 30.1.... Počítá jen DNY nikoly měsíce.. takže nevim jak naložit s těma měsícema..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0