Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: klasa do obslugi sesji
Forum PHP.pl > Forum > PHP
donmateo
witam
stworzyłem sobie klasę do obsługi sesji i teraz przy jej wywołaniu:

Kod
include_once('klasy/session.inc.php');
$session=new Sesja;


wywala błąd, że nagłówek już został wysłany do przeglądarki. Co wysyła ten nagłówek? Czy robi to funkcja include? Klasa session.inc.php nie przekazuje do przeglądarki żadnego tekstu więc nie rozumiem co sie dzieje :-)

I teraz drugie pytanie.

Problem rozwiązałem włączając buforowanie:

Kod
ob_start();
include('klasy/session.inc.php');
$session=new Sesja;
ob_end_clean();


Czy jest jakieś inne rozwiązanie mojego problemu?
em1X
eh a może byś pokazał co tam napisałeś.. wróżki to my nie jesteśmy
donmateo
Cytat(ja @ 31.08.2008, 22:39:00 ) *
Klasa session.inc.php nie przekazuje do przeglądarki żadnego tekstu

to raczej powinno Ci wystarczyć i oszczędź sobie zwrotów z wróżką. Jak nie znasz rozwiązania to po co piszesz?

session.inc.php:
Kod
<?php
   class Sesja
   {
       private $session=array();
       public function __construct()
       {
           session_start();
       }
       public function __set($nazwa, $wartosc)
       {
           $_SESSION[$nazwa]=$wartosc;
       }
       public function __get($nazwa)
       {
           return $this->session[$nazwa]=$_SESSION[$nazwa];
       }
    }
   ?>
merk
Hej,

W podanym kodzie brak nawiasów jak tworzysz obiekt
  1. <?php
  2. $session=new Sesja; // jest
  3. $session=new Sesja(); // powinno być
  4. ?>


Sprawdz też czy nie masz jskiś spacji/enterów po znaczniku zamykającym php "?>", w pliku z klasą sesji
dobrym pomysłem jest też zrezygnowanie ze znacznika zamykającego (nie jest on konieczny)
donmateo
właśnie nie mam żadnej spacji ani innych dodatkowych znaków. Próbowałem nawet bez znacznika kończącego php i nic ( nie wydaje mi się to zbyt poprawne).
A jeśli tworzymy obiekt klasy i nie przekazujemy konstruktorowi żadnych danych to wydaje mi sie że nawiasy nie są potrzebne ( mogę się mylić :-) ). Mimo wszystko obiekt klasy jest tworzony, moge na nim operować, ale tak jak pisałem wyskakuje niskopoziomowy błąd, że nagłówek już został wysłany. Tylko przez co?
em1X
Cytat(merk @ 1.09.2008, 12:15:45 ) *
Hej,

W podanym kodzie brak nawiasów jak tworzysz obiekt
  1. <?php
  2. $session=new Sesja; // jest
  3. $session=new Sesja(); // powinno być
  4. ?>


mylisz się.. to nie Java, a php dopuszcza brak nawiasów.
merk
Heh, przyznaje racje, nawiasy nie sa wymagane.

A wracając do tematu może sprawdź zawartośc bufora?
echo "-".ob_get_contents()."-";
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.