Gå til innhold

headers/session, etc.. already sent/started...


Anbefalte innlegg

Jeg brukte dette login scriptet: http://phpsense.com/php/php-login-script.html

Fungerte supert når jeg testet det og integrerte det i siden min. Men da jeg skulle laste det opp fra min datamaskin (win xp med wamp) til en ubuntu server, fikk jeg masse errors som "Cannot modify header information - headers already sent", session already started, osv..

 

Noe som er forståelig da jeg har "require_once('auth.php');" i alle sidene som skal være beskyttet. Og adminpanelet består av tre sider includert i en (admin meny, vis, legg til/endre). Da vil jeg jo sende headers og starte session flere ganger.

 

Men hvordan får jeg fikset det?

Og hvorfor fungerer det på min desktop windows maskin og ikke linux serveren? Apache config?

Fikk bort session already startet ved å plassere den setningen øverst i index.php filen. Så nå sitter jeg igjen med:

 

1. Warning: Cannot modify header information - headers already sent by (output started at /var/www/side/index.php:17) in /var/www/side/auth.php on line 6

 

2. Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id - headers already sent in /var/www/side/inc/login-exec.php on line 30

Endret av dico
Lenke til kommentar
Videoannonse
Annonse

headers er en del av http og sendes først fra klienten til serveren, deretter svar fra serveren etterfulgt av innholdet i 'filen'.

når du først har sendt litt av innholdet i 'filen', så kan du ikke endre på header blokken som ble sendt for å konfigurere forbindelsen.

hvis du laster en side med firebug på (firefox extension) så ser du header informasjonen som blir utvekslet.

 

Response Headers

Date Tue, 17 Jun 2008 13:39:44 GMT

Server Apache/2.2.4 (Win32) PHP/5.2.4

X-Powered-By PHP/5.2.4

Expires Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma no-cache

Keep-Alive timeout=5, max=99

Connection Keep-Alive

Transfer-Encoding chunked

Content-Type text/html; charset=UTF-8

 

Request Headers

Host aurora

User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14

Accept text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

Accept-Language nb,no;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2

Accept-Encoding gzip,deflate

Accept-Charset UTF-8,*

Keep-Alive 300

Connection keep-alive

Referer http://aurora/

Cookie PHPSESSID=2co836shci264aq9ss9a3i4196

Lenke til kommentar
Ser faktisk ut til at hele scriptet virket perfekt når jeg satte inn ob_start(); :)

 

Jeg satt det øverst sammen med session start i index.php filen.

Vil det ha noen påvirkning opp mot sikkerheten på siden?

 

http://no.php.net/ob_start <-- Så vidt jeg forstår det sendes kun headers til klienten fra serveren?

 

Nei, output buffering har ingen innvirkning på sikkerheten i scriptet ditt. Men du bør virkelig lese litt om HTTP-kommunikasjon og headere, og hvordan output buffering fungerer før du bruker det som en bugfix i ditt tilfelle.

 

Feilen din skyldes sannsynligvis at du enten har output (HTML-kode, echo('tekst'), etc.) før du kjører session_regenerate_id(), eller at du har lagret filene dine som UTF-8 med BOM. Fiks den feilen, så skal du ikke trenge å aktivere output buffering.

Endret av Lokaltog
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...