Autor Zpráva
Měsíček
Profil
Učím se teď pole a switch,case a měl bych už pár otázek, mám tento kód :

<?
$banip = array("85.207.199.159","85.207.199.158");
Switch ($_SERVER['REMOTE_ADDR'])
{
case $banip[0]:
echo "Máte IP BAN prosím odějděte nebo informujte Admina";
break;

case $banip[1]:
echo "Máte IP BAN prosím odějděte nebo informujte Admina";
break;

default:
echo "Přístup povolen :-) !";
}

?>

a potřeboval bych, aby si switch v case vybral všechny položky co jsou v poli banip a jestli se zhodují tak vyslal hlášku :"Máte IP BAN ...." , zkrátka, abych na každou IP nemusel dělat novej CASE nevíte jak to udělat, aby zkontroloval celé pole a ne jenom určité číslo ?
centi
Profil
Měsíček
http://cz2.php.net/in_array
Měsíček
Profil
to ještě není úplně ono musel bych na každou IP vypisovat další zjištění nebo kontrolu, potřebuji to takhle :

1.)Proměnná s BANIP ->kontrola jestli se REMOTE_ADDR zhoduje s 100 dalšími IP v BANIP jestli ano vypíše chybu jestli ne pošle dál ..

Chtěl jsem něco takového, ale to nejde :-))) : $promenna[1-34] :-)))
centi
Profil
Toto nestačí?

if ( in_array( $_SERVER['REMOTE_ADDR'], $banip ) ) {
echo "Máte IP BAN prosím odějděte nebo informujte Admina";
}
djlj
Profil
Měsíček
Nemusel.

if(in_array($_SERVER['REMOTE_ADDR'], $banip)){
//ban
}
Měsíček
Profil
aha vlastně díky moc, jenom ještě, aby to bylo úplné jak se to prosím vás dělá ve switch a case, vím, že if je lepší, ale raději bych uměl oboje dvoje :-)
Alphard
Profil
ale raději bych uměl oboje dvoje
umět také znamená vědět, kdy použít
sem patří if
Měsíček
Profil
a jak by to bylo teda v switch ? :-))
krteczek
Profil
Měsíček: v tomhle případě se prostě pomocí array funkcí vyhledá jestlije v dané array hledaná položka, nepotřebuješ žádenswitch ;-)
Měsíček
Profil
já vím :-))), ale dodnes jsem switch nechápal a toto je příležitost jak se trochu přiučit :-)
bukaj
Profil
Měsíček
Nejdříve je nutné pochopit, jak vlastně switch pracuje a k čemu je určen. Pak ho teprve můžeš začít používat. Switch slouží k větvení podle nějaké hodnoty, která může nabývat předem daného počtu možností. Tudíž se to na příklad, který si sem dal ty použít prakticky nedá - zabanované IP mohou přibývat.

Napadá mě pouze jeden příklad praktického využití, kde by se vyskytovalo i pole:

Po číslovkách se v češtině vyskytují prakticky tři tvary téhož slova. Například: 1 člověk; 2, 3, 4 lidé; 0, 5 a více lidí. V většině aplikací to neřeší a využívají poslední varianty, i když by se na to dala napsat jednoduchá funkce:

/**
* vrátí správný tvar podle zadaného čísla
* @param int číslo
* @param array pole obsahující tvary, indexy: 0 - první tvar (př. člověk),
* 1 - druhý tvar (př. lidé), 2 - třetí tvar (př. lidí)
* @return string
*/
function tvarPodleCisla($cislo, $tvary)
{
//ověření, není-li číslo záporné, případné převedení na kladné
if($cislo < 0)
$cislo *= -1;
//předcházející podmínka tam klidně nemusí být, pokud pro záporná čísla
//chceme ponechávat třetí tvar
//pro jistotu zaokouhlíme
$cislo = round($cislo);
//switch
switch($cislo)
{
case 1: /* 1 člověk */
return $tvary[0];
case 2: /* 2 lidé */
case 3: /* 3 lidé */
case 4: /* 4 lidé */
return $tvary[1];
default: /* všechno ostatní, např. 0 lidí, 5 lidí, 6 lidí... */
return $tvary[2];
}
//sem by se zpracovávání funkce již nemělo dostat
}


Ale switch je víceméně na nic. Většina jazyků ho ani nemá implementováný (což je podle mě dobře). V PHP je to spíše přežitek z Céčka.
DFly
Profil
bukaj
tam se da pouzit v elseif <=2 && >=4 a prijde mi to stale prehledne

take zkusim jeden priklad

switch ($nazev_mesice) {
case "Led":
case "Leden":
case "Jan":
case "January":
$mesic = "1";
break;
...
}
v tomto pripade by vice podminek s || mohlo zasahovat i na vice radek - pokud by se to delalo i pro jine jazyky

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: