Předvánoční slevová akce PHP týden
Pouze tento týden sleva až 80 % na PHP e-learning!
Využij předvánočních slev a získej od nás 20 % bodů zdarma! Více zde

array_intersect_key - Český PHP manuál

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Funkce vrátí pole, jehož klíče jsou průnikem klíčů dvou polí. Možná to zní trochu matematicky, ale funkce je velmi dobře použitelná např. pro bezpečné zkopírování dat z $_POST.

Parametry

V obou parametrech jsou očekávána pole, z jejichž klíčů se udělá průnik.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

V prvním poli se ponechají jen ty klíče, které jsou přítomné i v poli druhém. Druhé pole tedy můžeme chápat jako vzorové. Hodnoty z 2. pole se do výsledku nikdy nedostanou.

Návratová hodnota

Pole s průnikem klíčů obou polí.

Příklad

Ukažme si, jak lze funkci využít pro bezpečné vyfiltrování pole, které nám odeslal uživatel (např. hodnoty v $_POST).

<?php
// $pole by bylo ve skutečnosti $_POST
$pole = array(
        'jmeno' => 'Jan',
        'prijmeni' => 'Novák',
        'hodnoceni' => 'Nejlepší programátor na světě'
);
$povolene = array('jmeno', 'prijmeni');
$pole = array_intersect_key($pole, array_flip($povolene));

print_r($pole);

Obsah $pole je tedy nyní pouze:

Array
(
    [jmeno] => Jan
    [prijmeni] => Novák
)

Pomocí array_flip si vytvoříme pole s klíči bez hodnot a těmito klíči profiltrujeme vstupní pole.

Kód výše by mohl být někde ve správě uživatelů, kde si uživatel chtěl změnit spolu se jménem a příjmením ještě jeho hodnocení. To jednoduše odeslal v $_POST třeba tak, že si přidal do formuláře pomocí Developer Tools další políčko. I kdyby takový sloupec v databázi opravdu existoval, do dotazu se nedostane.


 

 

Manuál pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Všechny články v sekci
Pole - Český PHP manuál
Aktivity (1)

 

 

Komentáře

Avatar
Alma Mater
Člen
Avatar
Alma Mater:28. května 1:20
if ($_POST)
                {

// Funkcia  array_intersect_key v skratke ošetruje to, ktoré klíče sa majú posielať (ktoré sú želané).

// Najprv KLÍČE zapíšeme ako HODNOTY  do poľa  $klice.

//  Následne tieto HODNOTY prevedieme na KLICE funkciou array_flip($klice).

// Potom funkciou array_intersect_key hladame zhodu medzi klíčmi poslanými z $_POST a našimi očakavanými klíčmi, z funkcie array_flip($klice).

// Nakoniec do poľa $clanek dostaneme len tie klíče, ktoré sa zhodujú a k nim sa priradia hodnoty.

$klice = array('titulek', 'obsah', 'url', 'popisek', 'klicova_slova');
$clanek = array_intersect_key($_POST, array_flip($klice));

}

Dúfam že som to pochopil správne :-). Je to iba ďalšie vysvetlenie funkcie array_intersect_key :-)

Oříznout $_POST musíme vždy, jinak se vystavujeme útoku mass assignment, uživatel by si do formuláře mohl přidat nějaká pole a ta by se vložila do databázového dotazu.

Odpovědět
28. května 1:20
Kopírovanie je forma zdieľania informácii, bez autorských práv sa informácie nezadržiavajú - šíria sa tam kde treba..
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.