ďťż

[PHP] include() kłóci się z header() ...

       

Podstrony


telcocafe

Otóż mam taką sytuację: comment.php podłącza config.php(który podłącza functions.php i html.php) i comment_inc.php. W comment.php jest funkcja header() która uaktywnia się po dodaniu komentarza aby odświeżyć stronę. Niestety, wszystko działało dopóki nie stworzyłem pliku html.php, w którym zawarta jest jak na razie jedna funkcja zawierająca wygląd newsów (tabelka). Nawet gdy html.php jest pusty(lub zawiera tylko '<? ?>', to i tak header wywala błąd.

Warning: Cannot modify header information - headers already sent by (output started at D:\www\theme\html.php:46) in D:\www\comment.php on line 17
Czemu nie mogę includować więcej niż jednego pliku w config.php ?
Użytkownik Isaac from Vale edytował ten post 07 czerwiec 2007, 13:37


Nie możesz, bo już wysyłasz jakieś dane (output started at D:\www\theme\html.php:46) do przeglądarki.
Popatrz na ob_start() oraz ob_end_flush(), a także poczytaj o BOM-ie (wikipedia ;)).
//pardon: inkludować więcej plików zawsze możesz, ale ostrzeżenia Ci się będą ciągle pokazywać (uwaga, ostrzeżenie != błąd).
Użytkownik pbnan edytował ten post 07 czerwiec 2007, 13:47
No, ale functions.php jest podłączony i sam nic nie wysyła, sam zbiór funkcji - tak samo html.php. I jakoś functions.php nic nie przeszkadza
Użytkownik Isaac from Vale edytował ten post 07 czerwiec 2007, 13:51
Według parsera PHP wysyła coś html.php (output started at D:\www\theme\html.php:46), także coś musi być nie tak. Oprócz tego pisałeś, że jeśli nawet html.php jest pusty, to błąd się pojawia, zatem sprawdź plik pod kątem istnienia BOM-u. http://pl.wikipedia.org/wiki/BOM



Sprawdziłem jeszcze raz. Gdy html.php ma tylko <??> to jednak działa normalnie header.... ale przecież w takim jportalu też są includowane na podobnym 'łańcuchu' pliki jak moje i wszystko tam działa. :D

Działa normalnie header, bo nic nie wysyła się w linii 46 w pliku html.php (bo jest pusty) - pokaż ten plik (pełny, jeśli można :D), jeśli nie możesz, to linie 44, 45, 46, 47 z niego...

<? if(!defined('IN_SCRIPT')) { die('Brak dostępu do pliku. Najprawdopodobniej nastąpiła próba włamania.'); } # Wygląd newsów function news_theme($title, $text, $author, $date, $id, $comments) { print (' <div align="center"> <table border="0" width="100%"> <tr> <td class="title" width="100%" valign="top"colspan="2"><b>'.$title.'</b></td> </tr> <tr> <td class="text" width="100%" valign="top" colspan="2">'.$text.'</td> </tr> <tr> <td class="text" width="80%" valign="top"> <p align="left">Dodał: <b>'.$author.'</b> | '.$date.'<b> </b></td> <td class="text" width="20%" valign="top"> <p align="right">'); if($id>='1'){ print ('<a href="comment.php?id='.$id.'">Komentarzy: '.$comments.' </a>'); } print(' </td> </tr> <tr> <td class="" width="100%" valign="top" colspan="2"> &nbsp;</td> </tr> </table> </div> '); } ?>
Ej, nie! to nie bylo od tego :D znowu dałem enter i dalej działa. Samo się naprawiło? Albo podczas moich kombinacji metodą prób i błędów. W kazdym razie - juz wszystko ok.
Użytkownik Isaac from Vale edytował ten post 07 czerwiec 2007, 14:41
możliwe, że miałeś gdzieś pustą linijkę.... PHP traktuje to jako wysłanie danych do przeglądarki. Należy uważać na takie wpadki ;)

Dalej mam puste linijki, nawet ze spacjami. XD

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.