Diskuze: regulární výraz pro kontrolu ip adresy
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 7 zpráv z 7.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Jednak můžeš psát [0-9] (nebo jen \d) a taky můžeš uvést přesný počet opakování do složených závorek. Musíš počítat s tím, že v IP může každé číslo být 0-255 tedy jedna až tři číslice. preg_match by mohl vypadat nějak takto:
preg_match("/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/", $ip)
\d zastupuje jakoukoli číslici, výraz {1,3} zopakuje předchozí znak (tedy \d - libovolnou číslici) jednou až tři krát.
Problém takového testu je, že v něm projde i IP adresa od Sandry Bullock "23.75.345.200". Lepší by bylo takovou adresu přečíst jako 4 celá čísla oddělená tečkami a vyhodnotit, zda je každé číslo v rozsahu 0-255.
Ještě lepší by bylo, kdyby ta funkce rovnou konvertovala adresu do 32bitového integeru a v případě neúspěchu vyhodila výjimku. S takovou funkcí by se pracovalo mnohem lépe a byla by užitečnější.
Díval jsem se, že PHP má nějakou validaci:
http://php.net/…lidation.php
Máš s tím nějakou zkušenost?
Pokud taková funkce existuje, je vždy dobré ji využít. Neznal jsem ji a hned jsem ji vyzkoušel:
<?php
function filtr($ip) {
echo $ip,filter_var($ip, FILTER_VALIDATE_IP)?" platná":" neplatná","\n";
}
filtr('127.0.0.1');
filtr('327.0.0.1');
filtr('127.200.0.1');
filtr('127.256.0.1');
filtr('127.255.0.255');
filtr('23.75.345.200');
Výsledek:
127.0.0.1 platná
327.0.0.1 neplatná
127.200.0.1 platná
127.256.0.1 neplatná
127.255.0.255 platná
23.75.345.200 neplatná
Nejlepší bude, když uvedu na co to chci. Třeba to někomu pomůže.
Tvořím administraci webu, a tuto kontrolu potřebuji pro zadání ip adresy do
formuláře. Pro zadanou IP adresu bude web nepřístupný.
V tom případě bude asi funkce
filter_var($ip, FILTER_VALIDATE_IP) to pravé.
function is_ip($ip){
return is_string(filter_var($ip, FILTER_VALIDATE_IP));
}
na http://www.php.net/…validate.php
jsou k dispozici další možnosti filtrování IP.
Zobrazeno 7 zpráv z 7.