Witam
czy ma ktoś pomysł dlaczego nie działa funkcja session_regenerate_id();?
Skrypt ma zalogować użytkownika w bezpieczny sposób. W związku z tym podane hasło i login zostają porównane z tymi w bazie danych i o ile tam występują to następnym krokiem jest właśnie użycie session_regenerate_id();, tak, żeby można było wygenerować nowe ID Sesji, które będzie zapisane do bazy. Jednak zamiast Id sesji dostaję następujący wyjątek:
Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent
po czym wskazana zostaje linijka kodu, w której użyta zostałą fukncja Regenerate Id. ID Sesji nie zmienia się. (Dodam, że źródła w sieci, do których udało mi się dotrzeć w większości wskazują na puste linijki przed i po skrypcie, które zostały przeze mnie pieczołowicie usunięte).
Mam nadzieję, że ktoś będzie mógł pomóc..
Prym
27.10.2009, 23:54:38
hi
sprawa dość prosta i rozbija się o to stwierdzenie: headers already sent, co oznacza że skrypt wysłał już do przeglądarki użytkownika jakieś informacje.
poszukaj czy przed sprawdzeniem hasła loginu nie wyrzucasz coś poprzez echo w skrypcie. u mnie najczęściej było własnie to problemem.
lamcpp
28.10.2009, 00:19:17
idzie to ominąć ustawiając na początku skryptu:
a na końcu
ale nie zalecane to jest (sam miałem ostatnio taki problem).
Musisz patrzeć czy przed poleceniem nie ma funkcji print, echo, pustych wierszy na zewnątrz znaczników php, bądź czy nie ma dołączonych plików, które je mają.
zordon
28.10.2009, 15:40:02
jesli nie pomoga sposoby poprzednikow polecam przekonwertowac kodowanie pliku na utf-8 bez bom(robi to np notepad++) - sam kiedys mialem problem, ktory po tym zniknal. bom to taki znacznik wysylany z tego co pamietam jako pierwszy w pliku.
poza tym sprawdz, czy nie wywala ci jakis bledow, powiadomien, ktore wyswietlone na stronie(jesli jest jakies przekierowanie mozesz nawet tego nie zauwazyc) spowoduja wczesniejsze wyslanie naglowkow
Dzięki za odpowiedzi. Dziś problem zniknął

. ID Sesji zmienia się bez problemu i nie mam pojęcia o co chodziło. Z mojego doświadczenia wynika, że warto spróbować restartu przeglądarki i/lub kompa...