Skriveni karakteri u php file-u

Pozdrav,

imam situaciju da sam clientu ostavio config file u koji će upisati neke parametre o svom webu.
I kasnije vidim da web baca upozorenje:

<b>Warning</b>: Cannot modify header information - headers already sent by (output started at .../config_client.php:1) in...

Gledam ja u file, sve izgleda normalno pa sam posumnjao u skrivene karaktere. Prekucam file ispočetka i sada sve normalno radi.

Kako hendlati ovakve situacije?

Najcesce je greska da je nesto poslano prije <?php ili cak i poslje ?> zavrsnog taga. Znaci treba trim-at dokument, da se ne zalome nekakve greske. Plus ja znam mjenjat encoding iz UTF u ANSI i nazad, da nebi nekakav special character zapeo negdje.

Pobrini se da je php tag na samom početku bez ikakvih razmaka, i nemoj ga zatvarati na kraju dokumenta.

Najvjerojatnije se radi o BOM znaku. Neki editori to ubacuju. Najbolje je onda taj file otvoriti u npr. N++ i spremiti kao UTF-8 datoteku bez BOM mislim da se to u N++ tako zove.

BOM je byte order mark. Googlaj za daljnje informacije.

Sve štima, ali ne da mi se baš klijentu objašnjavati da mora config file uređivati sa N++ editorom ili kojim već. Volio bi da programski mogu osigurati da nema nikakvih skrivenih karaktera.

Probat ću trimati file kako kaže @krcmar pa vidjeti kako će reagirati na to.

Imas zato BOM cleaner php skriptu. Pa je mozes koristit kao funkciju kada klijent uploada svoj config file

BTW. Koliko se sjecam trimanje ne pomaze kod BOMa

1 Like

E ovo me zanima. Na jednom sajtu imam temu u kojoj većina PHP datoteka nije zatvorena. Kada je praksa da se ne zatvara ?>

Ono što je omeđeno php tagovima će proći PHP parser…ostatak će biti prosljeđen na client side točno onako kako je i napisano.
Ako ne zatvoriš php tag, onda se on “automatski zatvara” na kraju dokumenta.

Tako nekako, znači ako kombiniraš PHP i HTML, moraš tagovima pokazati što je php. Ako imaš do kraja dokumenta php, ne moraš zatvoriti…

On kada je sugerirao da ne zatvaram, mislim da je time samo osigurao da nema skrivenog karaktera nakon zatvaranja php-a. Drugu bitnu razliku ne vidim…osim što će ti dokument biti lakši za jedno 2 bytes :slight_smile:

1 Like

Copyright © 2022 WM Forum - AboutContact