- gban: Ingyen kellene, de tegnapra
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Szólánc.
- Geri Bátyó: B550 szűk keresztmetszet, de mi és miért?
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- sziku69: Fűzzük össze a szavakat :)
- eBay segítség kezdőknek
- moha bácsi: VIII. Viharsarki Hobbi Elektronika Találkozó Békéscsaba 2025.06.14. szombat
- Elektromos rásegítésű kerékpárok
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
#68216320 #12696 üzenetére
"php.ini-ben lehet beállítani valahol alapértelmezettként az error_reporting-et?"
Jaja:
http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting"Illetve emlitetted az if( ! empty( $_POST['valami'] ) )-t. Inkább ez vagy az isset() ?"
itt tudod megnézni bővebben:
http://php.net/manual/en/function.empty.php
mondjuk a lényege már ki lett vesézve. A kettő nem ekvivalens, csak arra céloztam, hogy az empty()-ben eleve "benne van" egy isset()-vizsgálat is, tehát ez nem fog notice-t dobni, ez is nyelvi elem (nem függvény):
"No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false."
Tehát ha a !isset($_POST['valami']) igaz, akkor az is igaz, hogy empty($_POST['valami']). De az empty() ezentúl még lehet akkor is igaz, ha az adott változó érték nélkül lett deklarálva, vagy annak értéke egyenlő a következők valamelyikével: "", 0, 0.0, "0", NULL, FALSE, array(). Pont ezért lett korábban az a végkövetkeztetés, hogy ha általános validációt szeretnél, akkor arra nem feltétlenül alkalmas az empty(). De ha az előbbi értékek közül egyik sem felel meg, akkor kényelmes eszköz lehet, de ennél is igaz az, hogy ettől még nem biztos, hogy jó: a kódod nem mondja meg az azt olvasó számára egyértelműen, hogy milyen értékeket vársz el, bár ettől függetlenül valamelyest beszédes is. Csak azt megzavarhatja, aki nincs tisztában az előbb írtakkal, hogy ha mondjuk egy felhasználó éppen 0-t ír egy adott űrlapmezőbe, akkor is igazzal fog visszatérni az empty(), és ez nem minden esetben jön jól.=======================
(#12699) biker :
"de a ===-nek is van szerintem hátránya: "0" === 0 FALSE szerintem, mert az első sztring a másik num
nem?"
De igen, ahogy írtad, a "0" === 0 az hamis, mivel a három egyenlőségjellel típusvizsgálatot is végzel, és ez nagyon jól is van így. Szóval ez nem hátrány.
Ha már ennyire belementünk: van például az intval() függvény is:
http://php.net/manual/en/function.intval.php
na ez is teljesen alkalmatlan vizsgálatra, mert az intval("asd") eredménye például 0 lesz, ami nyilvánvalóan nem jó. Tehát PHP-ben elég kacifántos lehet adott esetben egy validáció. -
cucka
addikt
válasz
#68216320 #12696 üzenetére
Hogy világos legyen az empty és az isset közötti különbség:
A következő két feltétel ekvivalens, leszámítva egy notice-t:
isset($v)
$v !== null
Tehát az isset true-val fog visszatérni bármilyen változóra, ami nem létezik, vagy létezik és a típusa/értéke null. Jól látható, hogy a neve ellenére az isset()-nek valójában semmi köze ahhoz, hogy egy változó (vagy tömb index) definiált-e vagy sem. (Ennek eldöntésére a get_defined_vars() való).
Az isset() abban az esetben működik biztonságosan, ha soha, semmilyen körülmények között nem használod a null értéket egyetlen változódnál sem. Felhasználó által post-olt űrlapok esetén ez alapból adott, mert minden értéked a tömbben string vagy array típusú, a kód többi részében viszont a te feladatod ezt biztosítani.És a következő két sor szintén ekvivalens
empty($v)
!isset($v) || $v != true
Az empty() az ekvivalens feltétel második fele miatt problémás. Itt a != operátort látod, ami azt jelenti, hogy a php itt a $v értékét előbb át fogja cast-olni bool típusúra. Ezért van az, hogy a "", "0", "0.0" stringekre az empty egyaránt igazzal fog visszatérni. A gyarkolatban ebből az következik, hogy az empty() teljesen alkalmatlan bármire, visszatérési értékének semmi köze ahhoz, hogy "üres"-e a változó értéke vagy sem. Javaslom, soha, semmilyen körülmények között ne használd az empty()-t, ez egész egyszerűen egy rosszul kitalált nyelvi elem a php-ban.(Egyébként is, a php-ban az == és != operátorok nem tranzitívak, ez elég ok ahhoz, hogy kerülendők legyenek. Helyette javasolt a === és !==, illetve úgy megírni a kódot, hogy tisztában legyél vele, melyik változód milyen típusú.)
Ez így nagyjából érthető?
Új hozzászólás Aktív témák
Hirdetés
- Eredeti Lenovo 230W töltők - 4X20Z83995
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- LG 55G3 - 55" OLED evo - 4K 120Hz 0.1ms - MLA - 2000 Nits - NVIDIA G-Sync - AMD FreeSync - HDMI 2.1
- 123 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- Apple iPhone SE 2020 64GB Kártyafüggetlen 1Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest