• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Cannot modify header information - headers already sent

Object Storage Arubacloud
0 głosów
484 wizyt
pytanie zadane 7 lipca 2015 w HTML i CSS przez mowmiheniek Stary wyjadacz (11,900 p.)

Witam,

Po dodaniu do stylów tego:

  .test + .tooltip > .tooltip-inner{
                background-color: #c8e5bc;
                border-radius: 5px;
                color: #000; 
                border: 1px solid green; 
                padding: 5px;
                font-size: 15px;
                width: 220px;
            }

Wywala mi ten błąd z tematu.

Bez tego działa. Stosuje także: ob_start();

Dzięki za pomoc.

3 odpowiedzi

+4 głosów
odpowiedź 7 lipca 2015 przez Schizohatter Nałogowiec (39,600 p.)
wybrane 8 lipca 2015 przez mowmiheniek
 
Najlepsza
Pewnie edytowałeś plik przez Windowsowy Notatnik, a oprócz tego te style CSS nie znajdują się w pliku zewnętrznym, tylko wewnątrz pliku z PHP i pojawił Ci się BOM. Otwórz kod przez jakiś konkretny edytor (np. Sublime Text) i na samym początku pliku powinny Ci się pojawić takie śmieszne znaczki. Usuń je, wybierz kodowanie UTF-8 bez BOM i zapisz. Powinno działać. A jak nie - to pokaż kod, chociaż poprawnie użyty bufor (ob_start()) powinien działać, jeśli to nie wina BOM.
komentarz 7 lipca 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)

Nie, wszystko zrobione na NetBeans. Wszystko jest whitout BOM. Style znajdują się w pliku header.php.  Plik header:

<?php
session_start();
	
	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}
?>
<!DOCTYPE html>
<html>
    <head>
         <title><?php echo $pageTitle ?></title>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="css/bootstrap.css" type="text/css"/>
        <link rel="stylesheet" href="font-awesome/css/font-awesome.min.css">
        <link rel="icon" href="ico/favicon.ico">
        <style>
            .btn-new{
                color: darkseagreen;
                font-size: 20px;
            }
            .breadcrumb-bgcolor{
                background: #ffffff;
            }
            .float-left {
                float: left;
            }
            .simplebox {
            outline: none;
            border: none !important;
            -webkit-box-shadow: none !important;
            -moz-box-shadow: none !important;
            box-shadow: none !important;
            }
            .hr {
                border: 0;
                height: 1px;
                background: #333;
                background-image: linear-gradient(to right, #ccc, #333, #ccc);
            }
            .squer {
              min-height: 150px;
              border-radius:6px;
            }
            .new_border{
              border-radius:6px; 
            }       
            .margin_div{
                margin-bottom: 10px;
                margin-left: 10px;
                margin-right: 10px;
                margin-top: 10px;                   
            }
            .question_mark{
                color:#000;
                font-size:18px;               
            }
            .title_green {
            border-radius:6px; 
            padding-bottom: 10px; 
            padding-top: 10px
            }
        </style>
    </head>
    <body>

Po dodaniu ww. stylu wywala ten błąd. Bez niego wszystko jest ok. Wydaje mi się to bardzo dziwne. 

+1 głos
odpowiedź 7 lipca 2015 przez rafal.budzis Szeryf (85,260 p.)
Bład po stronie PHP musisz pokazać więcej w skrócie chodzi o to ze wysłałeś jakaś cześć HTMLa a chcesz wysłać coś jeszcze w nagłówku (np zmienić ciastko, ustawić sesje, wykonac przekierowanie) czego zrobić nie możesz. Czasem takie działanie może być spowodowane przez zły zapis kodowania jeśli zapiszesz UTF-8 z BOM to nagłówek kodowania wysle się jako HTML bo bedzie przed znakiem <?php
0 głosów
odpowiedź 7 lipca 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)

A to plik gdzie umieszczam header.php:

<?php
$pageTitle = 'Modify';
include 'header.php';
ob_start();
include 'menu.php';
?>

 

komentarz 7 lipca 2015 przez Schizohatter Nałogowiec (39,600 p.)

Eh... W tym pliku, do której includujesz header, przenieś bufor na sam początek. On powinien być w pierwszej linijce pliku. A na sam koniec dorzuć ob_end_flush();

Najlepiej by było, żebyś też przeniósł session_start(); do tego pliku "głównego", do którego includujesz wszystkie pliki. Do tego pliku "nadrzędnego", który nie jest includowany nigdzie (i w tym samym miejscu powinien się znaleźć ob_start, ale przed session_start)

komentarz 7 lipca 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)
Dzięki, miałem juz ten problem wczesniej i gdześ wyczytałem, że tak to ma wyglądać.
Najlepsze, że to działało :). Musisz mi wybaczyć, amatorem jestem.
Żeby być pewnym:

To ob_end_flush(); wrzucić na koniec strony czy dodać do pliku footer.php który jest includowany na końcu?

W drugim akapicie się trochę pogubiłem. session_start - mam umieścić w każdej podstronie gdzie includuje header?
komentarz 8 lipca 2015 przez Schizohatter Nałogowiec (39,600 p.)

Nie. Masz mieć jedno session_start na cały "plik", który wyświetlasz użytkownikowi.
 

Przykładowo: użytkownik żąda adresu index.php. Ty mu chcesz zaoferować:
a) sesje
b) bufor
c) header i footer dołączane za pomocą include.

W takim przypadku plik index.php by wyglądał tak:

<?php
// index.php
ob_start();
session_start();

include 'header.php';

echo 'treść strony index.php';

include 'footer.php';
ob_end_flush();

?>

Zakładając, że właśnie w ten sposób serwujesz strony użytkownikowi. Ale finalnie, po złączeniu wszystkich plików, ma być: jedno session_start i jedno ob_start
 

komentarz 8 lipca 2015 przez mowmiheniek Stary wyjadacz (11,900 p.)
Dziękuje za pomoc!

Podobne pytania

0 głosów
2 odpowiedzi 1,947 wizyt
+2 głosów
2 odpowiedzi 9,955 wizyt
0 głosów
2 odpowiedzi 299 wizyt
pytanie zadane 17 lutego 2016 w PHP przez dxq31 Początkujący (290 p.)

92,575 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...