Gå til innhold

[Løst]"Cannot send session cookie - headers already sent by" Hvordan kan man fikse det?


Anbefalte innlegg

Hei!
Får følgende error:

 

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home3/mathiass/public_html/****/includes/admin23/dbconnect23.php:5) in /home3/mathiass/public_html/****/includes/checklogin.php on line 25
Endret av Gjest
Lenke til kommentar
Videoannonse
Annonse
Til alle som får problemet:

Sørg for at

session_start();

er i toppen av koden.

Og pass på at INGEN ting er før den :wee:

Nja. Pass på at ingenting blir sendt til klienten før du kaller session_start(). Den vil sette et header for å lage cookie til PHPSESSID eller hva du kaller den.

Det samme gjelder for alle andre headere du vil sende (som location for redirect).

Lenke til kommentar

Tråden er ikke løst tongue.gif

Jeg har det slik:

index.php --> Hente språk etter det du har valgt --> Henter fil etter det du har valgt --> Printer ut filen du har valgt fra menyen til en <div> ---> Filen henter alle språk variablene fra en array.
Problemet er er dette:

Warning: Cannot modify header information - headers already sent by (output started at /home3/mathiass/public_html/mikaelf/lang/no.php:7) in /home3/mathiass/public_html/mikaelf/includes/sider/logout.php on line 4
I den ser du blandt annet: no.php det vil si en språk fil. På linje 7 er det:
<?php

Det jeg prøver å gjøre i logout.php:
<?php
session_unset();
session_destroy();
header( "Location: http://www.****.*****com/index.php?page=login" );
?>
Jeg vil loge ut og sende deg automatisk til login siden igjen.
Men det går tydelig hvis ikke. What to do? Endret av Gjest
Lenke til kommentar
I den ser du blandt annet: no.php det vil si en språk fil. På linje 7 er det:

<?php

Alt før første <?php og alt mellom ?> og <?php blir sendt til klienten. Da sendes alle headere også og du kan ikke sende flere.

Så, korfor har du en <?php på linje 7?

 

En "fiks" er å bruke output buffering (ob_start). Det har mange fordeler, men det kan være greit å rydde kode allikevel.

Endret av OIS
Lenke til kommentar

Hei!

index.php --> Hente språk etter det du har valgt --> Henter fil etter det du har valgt --> Printer ut filen du har valgt fra menyen til en <div> ---> Filen henter alle språk variablene fra en array og det er her jeg har <?php.

<?php
session_start();
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<?php
$lang = array(
		'lang-id' => "no",
		//		
		// Gjestebok
		//
		// Skriv nytt innlegg:
		'gjestebok_navn' => 'Ditt navn:',
		'gjestebok_email' => 'Din email:',
		'gjestebok_kommentar' => 'Ditt innlegg:',			
		// Gjestebok Innlegg
		'gjestebok_tekst' => 'Gjesteboka!',
		'gjestebok_add' => 'Legg igjen en kommentar!',
		'gjestebok_navn2' => 'Skrevet av:',
		'gjestebok_email2' => 'Email:',
		'gjestebok_kommentar2' => 'Kommentar:',	
		// Gjestebok Enkelt innlegg
		'gjestebok_enkelt_innlegg' => 'Du viser nå innlegget med ID:',
		'gjestebok_enkelt_innlegg2' => 'Klikk her for å se alle innleggene',
		// Gjestebok admin
		'gjestebok_delete' => 'Slett ',
		'gjestebok_delete2' => 'Posten ble slettet ',
		'gjestebok_delete3' => 'Klikk her for å gå tilbake',
		'gjestebok_edit' => 'Endre',
		//
		// Menu
		//
		'menu' => 'Hjem<br />
		Admin<br />
		Gjestebok',
		//		
		// Footer
		//
		'footer_left'  => 'Velg språk:',
		'footer_center'  => 'Copyright © 2009 - Mikael | Siste  oppdatering: 10 - Mai - 2009',
	);
?>

Språk filen nå ^^

Lenke til kommentar

Korfor har du header data i språk filen din? Her er det blanding av to forskjellige ting.

 

Slik ville eg lagd språk filen din:

<?php
return array(
		'lang-id' => "no",
		//		
		// Gjestebok
		//
		// Skriv nytt innlegg:
		'gjestebok_navn' => 'Ditt navn:',
		'gjestebok_email' => 'Din email:',
		'gjestebok_kommentar' => 'Ditt innlegg:',			
		// Gjestebok Innlegg
		'gjestebok_tekst' => 'Gjesteboka!',
		'gjestebok_add' => 'Legg igjen en kommentar!',
		'gjestebok_navn2' => 'Skrevet av:',
		'gjestebok_email2' => 'Email:',
		'gjestebok_kommentar2' => 'Kommentar:',	
		// Gjestebok Enkelt innlegg
		'gjestebok_enkelt_innlegg' => 'Du viser nå innlegget med ID:',
		'gjestebok_enkelt_innlegg2' => 'Klikk her for å se alle innleggene',
		// Gjestebok admin
		'gjestebok_delete' => 'Slett ',
		'gjestebok_delete2' => 'Posten ble slettet ',
		'gjestebok_delete3' => 'Klikk her for å gå tilbake',
		'gjestebok_edit' => 'Endre',
		//
		// Menu
		//
		'menu' => 'Hjem<br />
		Admin<br />
		Gjestebok',
		//		
		// Footer
		//
		'footer_left'  => 'Velg språk:',
		'footer_center'  => 'Copyright © 2009 - Mikael | Siste  oppdatering: 10 - Mai - 2009',
	);

Merk ingen ?> så vi ikke sender noe data og dermed ikke kan endre headere.

 

Denne språkfilen inkluderes på følgende måte:

$sprak = require('no_NB.php');

 

Og hvis du vil kunne endre headere (som ved redirect) så må du ikke sende noe. En god regel er:

hvis du har ?>i en fil vil den sende data (hvis du ikke bruker output buffering).

(Dette er det samme som at et skytevåpen er alltid ladet).

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...