Gå til innhold

Feilmeldinger ved session_start();


Anbefalte innlegg

Jeg ønsker å bruke sessions på siden min slik at jeg kan implementere en login-funksjon på siden min. AFAIK må session startes helt i toppen av fila, før html kjøres. Det har jeg etter mitt hode gjort, men det funker allikevel ikke. Jeg kan for ordens skyld nevne at jeg har testet å lage en tom fil som kun inneholder dette:

 

<?php session_start(); 
echo "test";
?>

 

Koden ovenfor fungerer slik den skal, og gir ikke feilmeldinger.

 

 

<?php 
session_start(); 
include('login.php');
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Arcticsilence</title>
<link href="css_files/index.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="wrapper">
<div id="banner"></div>
<div id="upperSpacerBar"><p></p></div>
<div id="menuContainer">
<ol>
<li><a href="index.php">Home</a></li>
<li><a href="index.php?id=2">Portfolio</a></li>
<li><a href="index.php?id=3">Equipment</a></li>
<li><a href="index.php?id=4">About</a></li>
<li><a href="index.php?id=5">Login</a></li>
<li><a href="index.php?id=6">Contact</a></li>
</ol>
</div>
<div id="lowerSpacerBar"><p></p></div>
<?php

if ( isset($_GET['id'])) 
{
$id = $_GET['id'];

if(($id == "1") || ($id == "2") || ($id == "3") || ($id == "4") ||($id ==  "5") || ($id == "6") || ($id == "10") || ($id == "11") || ($id == "12") || ($id == "13") || ($id == "14") || ($id == "15"))
{
	$id = mysql_real_escape_string($id);
	$result = mysql_query("SELECT * FROM aTable WHERE ID= '$id'",$database);
	$myrow = mysql_fetch_array($result);

	if (!file_exists($myrow['Page'])) 
	{
		$side = 'main.php';
	}
	else
	{
		$side = $myrow['Page'];
	}
	include $side;
}
else
{
	include 'main.php';
}
}
else
{
include 'main.php';
}

?>
<div id="footer"><p>Copyright © 2008 Francis Dougherty Paulin</p>
<div id="css_validation"><a href="http://jigsaw.w3.org/css-validator/validator?uri=www.arcticsilence.com">CSS</a></div>
<div id="html_validation"><a href="http://validator.w3.org/check?uri=referer">HTML</a></div>
</div>
</div>
</body>
</html>

 

Jeg får denne feilmeldingen:

 

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /customers/arcticsilence.com/arcticsilence.com/httpd.www/test_random/index.php:1) in /customers/arcticsilence.com/arcticsilence.com/httpd.www/test_random/index.php on line 2

 

Håper noen klarer å se hva som er problemet.

 

Setter utrolig pris på all hjelp jeg kan få! :)

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar
Videoannonse
Annonse

session_start(); må sendes før headers, som feilmeldingen sier.

 

I det dokumentet som ikke virker, er du sikker på at du ikke har noen form for kode før session_start();?

Du kan ikke ha noe mellomrom før <?php, da blir den emo.

 

Ellers har man en funksjon som heter ob_start() som altså slår på output-buffering. Da sendes ingen headers eller noe før koden er ferdig kjørt.

 

Tips på norskwebforum.no

 

Håper du finner noe til nytte. :)

Lenke til kommentar

Tusen takk for svar!

 

Jeg har nå testet å sette inn dette helt helt øverst i siden:

 

<?php ob_start(); ?>
<?php
 session_start();
?>

 

Feilmeldingen er akkurat den samme. Jeg begriper ikke hvilken html kode som etter sigende blir kjørt før session_start().

 

Francis

Lenke til kommentar

Så lenge det er helt, helt øverst uten noe som helst før i filen (ikke en gang ett mellomrom eller linjeskift) ser jeg ikke helt hvordan dette kan skje.

 

Et skudd i blinde, men én gang dette skjedde var det fordi editoren min la inn usynlige tegn helt først i dokumentet. Prøv å åpne filen din i notisblokk, notepad og andre editorer og sjekk om det ligger noe rusk øverst i dokumentet.

 

 

(4500 innlegg^^)

 

Endret av Matsemann
Lenke til kommentar

Jeg gjorde noe så banalt som å kopiere all koden i index.php, opprette et tomt dokument, overskive index.php med den nye fila, og til min store forundring fungerte det!

 

Nå har jeg kun:

 

<?php

session_start();

?>

 

i toppen av fila, og feilmeldingene uteblir :D!

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar
Et skudd i blinde, men én gang dette skjedde var det fordi editoren min la inn usynlige tegn helt først i dokumentet. Prøv å åpne filen din i notisblokk, notepad og andre editorer og sjekk om det ligger noe rusk øverst i dokumentet.

Det tegnet er et BOM, som forteller nettleseren hvilken UTF-enkoding du bruker.

Lenke til kommentar

Du har nok helt rett!

 

Hovedsiden min som jeg ikke har endret enda validerer, men med warningen:

 

Potential Issues

The following missing or conflicting information caused the validator to perform guesswork prior to validation. If the guess or fallback is incorrect, it may make validation results entirely incoherent. It is highly recommended to check these potential issues, and, if necessary, fix them and re-validate the document.

Byte-Order Mark found in UTF-8 File.

The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.

 

Den nye validerer helt uten problemer eller warnings.

 

Slik jeg forstår det har ikke BOM noe å si for funksjonaliteten. Stemmer det?

 

Mvh

 

Francis

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å
×
×
  • Opprett ny...