Autor Zpráva
honzaik
Profil
Čau mám funkci
function ipchecker($ip_soubor)
{
	$ip = $_SERVER['REMOTE_ADDR'];
	if (!file_exists($ip_soubor))
	{
		file_put_contents($ip_soubor, $ip, LOCK_EX);
		pricteni("plus.php", "minus.php");
	}
	else if (file_exists($ip_soubor))
	{
		$old = file_get_contents($ip_soubor);
		$old_exploded = explode("\n",$old);
		foreach ($old_exploded as $one_ip )
		{
			if ($one_ip != $ip)
			{
				// neco 
				file_put_contents($ip_soubor, $old."\n".$ip, LOCK_EX);
			}
			else
			{
				// neco 
			}
		}
	}
}

funkce funguje dobře dokud v souboru $ip_soubor neni další IP, myslim si že to je kvůli tomu, že foreach sice rozdělí data po řádku ale když podmínce vyhoví jedna IP a druhá ne, tak to bere jako že ano, a já bych potřeboval, podmínku, jinou funkci, která by udělala to, že ikdyž jedno je TRUE a druhý FALSE tak at to udělá FALSE.
děkuji za odpovědi
okolojdouci
Profil *
Od řádku 13:

$uztamje=false;
foreach ($old_exploded as $one_ip ) {
  if ($one_ip == $ip) {
    $uztamje=true;
  }
}

if (!$uztamje) {
  file_put_contents($ip_soubor, $old."\n".$ip, LOCK_EX);
}

A zamysli se nad ifem na ř. 9.
honzaik
Profil
hm tohle jsem moc nepochopil, nad ifem na 9? vždyt předtim už je if, takže tam jde jen else if, a $uztamje mi jak pomůže vůbec, moc jsem to nepochopil, prosímtě jestli chceš vpiš mi to do toho celýho kódu takhle se moc v těch závorkách nevyznám :D
okolojdouci
Profil *
honzaik:
jestli chceš vpiš mi to do toho celýho kódu
Přesně to nechci.
If se používá takto:
if (výraz) {
// toto se provede, když výraz je pravda
} else {
// toto se provede, když výraz je nepravda
}


else if se sice používá, ale v tomto případě je ten druhý if nadbytečný, protože vyhodnocuje negaci výrazu, který je v prvním ifu.

Ten můj kód dělá to, že nejdřív řeknu, že daný řetězec v souboru není. Pak ten soubor projdu a když řetězec najdu, nahodím $uztamje = true. Po tom cyklu zjistím, jestli už tam je a když ne, přidám ho na konec. Šlo by to i líp, ale toto je srozumitelnější.
honzaik
Profil
takže ještě k tomu kódu nahoře, takže to
if (!$uztamje) {
  file_put_contents($ip_soubor, $old."\n".$ip, LOCK_EX);

je mimo foreach?
edit: díky moc už to funguje
okolojdouci
Profil *
honzaik:

No vidíš :)
A teď ještě mrkni na http://cz2.php.net/manual/en/function.in-array.php. Tím můžeš ten postup s cyklem nahradit.
honzaik
Profil
ok ještě jednou dík, mě prostě nějak nedochází proč na to stačilo takhle jednoduchý řešení :D, že mě to nenapadlo :D
asi potřebuju víc zkušeností :D
jo a k tomu in_array to vypadá jako ta druhá možnost :D super
add: už jsem si to předělal na to in_array, to aspon chápu celkově, díky

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