Warning: Cannot modify header information - headers already sent by
Sziasztok!
Én csak kezdő szinten foglalkozom php-vel, a problémám az hogy amikor bejelentkezem a login ablakomon, sikerül belépnem és megjelenik a védett tartalom, viszont az ablak tetején ez a hiba üzenet is.
Utána néztem a neten, és egyesek szerint ez azt jelenti hogy szóköz van az adott sorban, viszont én sehol nem találtam. Úgy sejtem valami banális hiba, ezért is kérlek benneteket ha valaki tud segítsen, mert nagyon fontos lenne hogy sikerüljön kiküszöbölnöm. Előre is köszönöm.
Üdv: SYA
■ Én csak kezdő szinten foglalkozom php-vel, a problémám az hogy amikor bejelentkezem a login ablakomon, sikerül belépnem és megjelenik a védett tartalom, viszont az ablak tetején ez a hiba üzenet is
Warning: Cannot modify header information - headers already sent by (output started at /documents/termkeink.php:9) in /documents/protection.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at /documents/termkeink.php:9) in /documents/protection.php on line 27
Utána néztem a neten, és egyesek szerint ez azt jelenti hogy szóköz van az adott sorban, viszont én sehol nem találtam. Úgy sejtem valami banális hiba, ezért is kérlek benneteket ha valaki tud segítsen, mert nagyon fontos lenne hogy sikerüljön kiküszöbölnöm. Előre is köszönöm.
Üdv: SYA
Ugy van
Magyarázat
A 'bármi' lehet akár egy szóköz is a '<?php' előtt, hiszen a szóköz szabályos HTML tartalom. (Edit: Igazából ez nem igaz, de a szerver akkor sem értelmezi. Kiküldi a böngészőnek ahogy van) Az include vagy require függvény hívásából is származhat a gond: ha a beolvasott fájl elején/végén van szóköz/újsor, akkor is előáll a probléma.
Még mindid nem jó...
Köszönet aki eddig is próbálta megoldani.
BOM
<?
előtt.UTF-8 BOM
termekeink.php
error kikapcsolása
Nem szép, de ha a script ezt a warningot leszámítva működik rendesen akkor ezt a sort tedd be az index.php elejére(kikapcsolja a hibaüzeneteket), de csak kiélesítéskor tedd be, mert fejlesztés alatt akkor nem látsz majd semmit:
ini_set('display_errors', 0);
Az ilyen problémák elkerülésére hasznos lehet valami template rendszer(pl.: Smarty), mert akkor szétválik a php és html kód, így az output biztos akkor kezdődik amikor már minden php lefutott.
Ha az UTF8 fájl BOM lenne a probléma azt elvileg látnád a böngészőben(Firefox), azaz valahol meg kellene jelennie a jól ismert "dtz" karaktereknek, ami a hibára utal.
Más: egy tanács: nem tudom, hogy a jelszavak kódolva vannak-e a $user_passwords tömbben, de ha nem, akkor ne tedd be cookiba kliens oldalra, mert nem túl biztonságos. Ha mindenképp el akarod küldeni a jelszót kliens oldalra, akkor használj valami hash függvényt a kódolására. Pl.: md5, sha1
hack
a forrás
Természetesen fejlesztés közben nem elrejteni, hanem megoldani kell a hibákat, de az éles környezetben már érdemes kikapcsolni a hiba megjelenítést és inkább logolni, mert egy-egy ilyen probléma szem előtt hagyva biztonsági kockázatot jelenthet.
Még most sem jó...
Kódszervezés
Kicsit szervezd úgy kódodat, hogy elsőként fusson le:
Ha ragaszkodsz
De mindenképp jobb egy jól szervezett kódot kiadni a kezedből, ráadásul könnyebben is tudod módosítani a dolgokat.
THX