|
|||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
Byte order mark a PHPV článku si popíšeme, jak řešit problémy s BOM při práci s hlavičkami v PHP.
Ze začátku jenom stručně o samotném BOM a poté následuje návod pro řešení problému s php. Byte order mark (BOM) volně přeloženo jako „označení uspořádání bajtů“. Jedná se o znak, který se používá k rozlišení mezi UTF-16 a UTF-8, také pro rozlišení ukládání bajtů do paměti big-endian / little-endian. Big-endian v tomto případě se uloží nejvíce významný bajt na místo v paměti s nejnižší adresou a poté se ukládají ostatní bajty po nejméně významný bajt. Little-endian je přesný opak. Více o BOM na http://en.wikipedia.org/wiki/Byte_order_mark. Protože některé aplikace (např. Notepad) užívají tuto značku na začátku souboru (php, html, txt...) pro rozlišení formátu UTF-8, vede to k problémům s odesíláním headerů. Jelikož ne každý používá hexadecimální editor pro psaní v php, tak tuto značku nevidí a při práci s headery vám server, na kterém spustíte script, napíše něco takového: Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/2511/virtual/www/bom.php:1) in /data/web/virtuals/2511/virtual/www/bom.php on line 2. A teď už konkrétní případ. Uložil jsem soubor bom.php v Notepadu v UTF-8. Jako obsah jsem dal například kód pro přesměrování.
Poté jsem jej chtěl spustit a vyhodilo mi to výše zmiňovanou chybu, protože před headery byl již výstup a to právě BOM. V textovém editoru vypadá script naprosto v pořádku, to je hodně matoucí, a pokud tento problém neznáte tak vás jistě naprosto vyvede z míry. Ovšem pokud soubor otevřete v hexadecimálním editoru, všimnete si, že je tam něco navíc a objevíte BOM. Odstranit BOM můžete právě pomocí nějakého hexadecimálního editoru například GHex, (Pokud nevlastníte tento druh editoru a víte, že váš problém je BOM, tak řešení pro vás je o pár řádku níže.) Vymažete to před < tedy EFBBBF. A teď by to mělo fungovat bez problému. Hromadné smazání BOMPro hromadné smazání se může hodit tento PHP script. Odstraní ze všech souborů v adresáři, kde je uložen tento script, BOM na začátku obsahu, také vypíše všechny soubory php, u kterých nelezl BOM. Na závěr vypíše počet těchto souborů.
Pokud nechcete tento script spouštět přes webový prohlížeč, nebo jej chcete spustit v jiném adresáři než adresáře webového serveru, můžete použít terminál. Nejprve se musíte dostat do adresáře, ve kterém chcete nechat tento script pracovat, k tomu poslouží příkaz cd.
Tento příkaz vás přenese do adresáře /home/uzivatel/ (místo tohoto adresáře pište váš adresář). Poté spustíte shell:
A vložíte script bez <? na začátku a ?> na konci. Zadávání ukončíte pomocí CTRL+D, nebo napsáním exit. Nakonec řešení pro ty, kteří si nechtějí shánět jenom kvůli jednomu souboru (a přitom nechtějí měnit ostatní soubory v adresáři) hexadecimální editor. Je tu pro vás mírně poupravený předchozí script s formulářem pro zadání souboru. Stačí zadat například index.php a BOM bude odstraněn.
Pochopitelně úplně nejlepší je používat programy pro psaní, které tyto problémy nezpůsobují. Já používám v Ubuntu již základní dobře známý prográmek gedit. Přesto, že nenabízí kdoví jaké vychytávky, tak ho mohu jen doporučit. Doufám, že tento návod pro odstranění BOM je prospěšný.
Related article
PHP (1) - Historie a budoucnost PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (46) - Importujeme data do databáze PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Previous Show category (serial)
|
Szukanie oprogramowania
|
|||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |