Hallo ik ben verplaats van host, maar nu doet mijn site het opeens niet meer...
Ik krijg opeens errors van:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/zim/public_html/meaw/Bank.php:2) in /home/zim/public_html/meaw/Bank.php on line 3

Terwijl ik deze errors normaal (bij de andere host) niet krijgt. Wat is de fout hiervan? Wat kan ik eraan doen?

En heb ik genoeg informatie gegeven zodat jullie mijn kunnen helpen?
De functie session_start() in regel 3 moet aangeroepen worden voordat er enige output naar de browser is.

Maar volgens de foutmelding is in regel 2 al iets naar de browser verstuurd.

Waar dat door komt weten we niet. En hoe het kan dat (precies?) hetzelfde script bij de ene dat wel doet en bij de andere niet kunnen we ook niet raden.

Elwin
Misschien dat de functie die in bank.php op regel 2 staat een foutmelding geeft. Deze functie deed het misschien goed op de andere host. of error reporting staat hier hoger...

Maar wat staat er eigenlijk op regel 2?
Zoals ik begrijp (je kan niks raden) dan moet ik meer informatie geven. Dit is het eerste deel van het script:

<?
//Bank.php
?>
<html>
<head>
<link href="Style1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?
session_start();
if(!isset($_SESSION["user"])){
header("Location: Login.php");
}
..gaat verder...
?>
Maar waar kan het aan liggen? Ik heb ff op internet gekeken en sommige dat het iets was met php.ini en session.save_path.. maar ik snapte het niet dus misschien weet iemand hier meer over?

mvg
Zim
Je stuurt al troep naar de browser. Zoals ik dus al schreef in mijn post,,,

<?php
// Blabla
?>
<tag>Ik stuur troep</tag>
<?php
session_start();
?>

Dat moet zoiets:
<?php
// Blabla
session_start();
?>
<tag>Ik stuur troep</tag>
<?php
overige_functies();
?>

Zie ook de [faq]2[/faq].

Elwin
Dit komt omdat er al gegevens verstuurd zijn naar de browser, namelijk je HTML code, als dit gedaan is kun je geen header() of sessionstart() functie meer gebruiken. Dit is op te lossen door session_start() helemaal bovenaan de pagina te zetten, en bijvoorbeeld van output buffering gebruik te maken:

Helemaal bovenaan de pagina:

<?php
ob_start();
?>


en helemaal onderaan

<?php
ob_end()
?>


Edit: @Elwin -> header-functies zijn dan ook niet meer te gebruiken ;)
Ja het werkt nu wel.. (op elwins manier gedaan) maar waarom doet hij het op een server wel en andere niet?
Kan het aan de php versie liggen (ging van 4.40 naar 4.311)??
Volgens mij kan een server outputbuffering automatisch al aanzetten. (maar zeker weten doe ik het niet)
<?
//Bank.php
?>
<html>
<head>
<link href="Style1.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?
session_start();

Ik vind het raar dat je andere host dat niet zegt want er is al spul naar de browser gestuurd
error_reporing staat misschien wel lager, en sessies automatisch aan, dan krijg je dus geen melding, en je sessies doen het wel.

Reageren