Php megint idézőjelbe, eltávolítjuk a hiányosságokat és állandó PHP_INI_

PHP: megint idézőjelbe, megszüntetve a hiányosságokat és állandó PHP_INI_ *

Tipikus feladatok kizárt, hogy belépjenek a felhasználó felesleges szóközöket és / vagy a címke megoldódott szinte minden szakmai script PHP-ben.

Címkék eltávolítása könnyen strip_tags alapfelszereltség. hanem eltávolítani az összes extra terek (beleértve a szavak között), nem elég nekünk a standard berendezés. legalább, akkor kell használni a reguláris kifejezés:

(Vagy alternatív kifejezést itt).

Will csak megoldatlan probléma idézetek. Sajnos, az alapértelmezett PHP beállításait (köztük a jelenlegi verzió 5.3.1), idézi a húr át a módszer POST vagy GET után felhasználói, miközben megjeleníti azokat a képernyőn lehet „szűrni”, azaz az „a a kód lesz # 92; „:

Enter „word1” adja kimenet # 92; "word1 # 92;". Idézetek beállításokat PHP 4-5 változatban már megfelelnek a 3 változó jövőbeni verziójában 6 ígéretüket eltávolítani.

magic_quotes_gpc - ha az irányelv engedélyezve van, az összes karakter. " ”. \ És NULL (a nulla byte-kód) automatikusan menekülni backslash \. Verzió óta 5.3.0 elavult opció, el lesz távolítva a PHP 6.0.0. Ne változtassa szoftververzió régebbi 4.2.3. Alapértelmezés szerint engedélyezve van, ez a setup „bűnös” az a tény, hogy mi történt a szót.

magic_quotes_runtime - Ha engedélyezve van, a legtöbb visszatérő függvények adatbázisból vagy szöveges fájlt, majd visszatér a képernyő ugyanazon backslash dupla és szimpla idézőjelet. De ez még nem minden! Ha emellett tartalmazza magic_quotes_sybase irányelvet. Csak ezután megszökött az aposztróf jelet, nem egy karakterláncot és egy idézetet! Szerencsére ez az irányelv is vezérelhető szoftver, alapértelmezés szerint ki van kapcsolva, a verzió 5.3.0 elavult, és meg kell szüntetni a 6.0.0.

magic_quotes_sybase - mint már említettük, ha ez az opció engedélyezve van, akkor megváltoztatja a szabályokat a aposztróf árnyékolás, úgy azt egy további aposztróf helyett backslash ha magic_quotes_gpc vagy magic_quotes_runtime megengedett. Irányelv vezérelhető algoritmikusan alapértelmezés szerint tiltva. Sehol sem megírva, hogy ez nem helyes, de a PHP 6.0.0 Az irányelv is meg kell szüntetni.

Mivel mindezt nem megbolondul, és biztosítsák megfelelő kezelése idézetek?

Nemegyszer már megadott kódot mágikus funkciót. amely foglalkozik ezzel a problémával, az utóbbi években vált itt, mint:

Vagyis a 2 irányelvek hogy meg tudja fogalmazni a szoftver, és tegye (távirányítóval üzemzavar „@” - a későbbi verziók), a harmadik irányelv ellenőrzik és feldolgozott „felesleges” a visszaperjelek, ha szükséges. Utolsó kivitelezett standard funkció stripslashes. bár az egyik lenne „megszelídíteni” cserék, mint én, mielőtt:

get_magic_quotes_gpc funkció szintén nem volt oka, elzárására szabvány ini_get:

Ui Ebben a megközelítésben stripslashes függvény törli a kombináció a szimbólumok # 92; „? Még ha szükség van rá, például a mondatban hogyan lehet én csak az ilyen esetekben, cserélje ki a szimbólum” # 92; „A HTML-kód # 92;

Néha van, hogy megoldja a problémát fordított - szűrés a „veszélyes” backslash. Add visszaperjelet ha magic_quotes_gpc ki van kapcsolva, akkor beállíthatja a standard funkció addslashes. De ha magic_quotes_gpc be van kapcsolva, akkor nem kell addslashes - kap egy kettős árnyékolás. mert akkor a addslashes funkciót, és így automatikusan alkalmazzák az összes GET adatokat. POST. és sütit.

Most a teljes kód például eltávolítjuk a bemeneti címkéket, minden extra terek között tokenek nem függ az idézetek a beállításokat és visszatér formájában jegyzik annyira:

(A példában nem elég nyitó és záró HTML). Mint látható, mielőtt kiadja a címke

szöveg, mint a mező értéke (Szabványos HTML szintaxis szükséges value = „érték idézőjelek”), kicseréltük a „kritikus” a PHP kód <.>. . „” És az érintett „HTML-lét.” lt;. gt; stb Tettem alapfelszereltség htmlspecialchars. Általánosságban elmondható, hogy ezt kell tenni, mindig, függetlenül a beállítások idézetek.

Ugyanakkor megjegyezzük, még egy fontos technika, amely a kezdők is gyakran figyelmen kívül hagyják. Mielőtt bármilyen sort a script kódot generált SQL-lekérdezés ne felejtsük el, miután az adatbázis-kapcsolat használatához ezt a sort mysql_real_escape_string funkció -, hogy lesz egy standard referencia ezt a funkciót, minden nagyon jól festett, és miért :)

Végül megtudja, milyen fájlt php.ini módszereket, amelyek akkor könnyen változtat az úgynevezett „állandók PHP_INI_ *”, a hivatkozás egymás mellett irányelvnek a Cserélhető oszlopban írta a négy értékek:

Meghatározása PHP_INI_ állandók *

PHP_INI_USER - irányelv lehet állítani, hogy az egyéni szkriptek által ini_set vagy a Windows registry;

PHP_INI_PERDIR - direktíva a php.ini-ben. htaccess vagy httpd.conf;

PHP_INI_SYSTEM - direktíva a php.ini-ben vagy httpd.conf file;

PHP_INI_ALL - irányelv lehet telepíteni bárhol.