Archief - PHP: Cannot modify header information - headers already sent

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

KoenDK

Legacy Member
Ik weet dat deze error ENORM populair is via google, met alle antwoorden, maar ik krijg het niet opgelost :wtf:


1e oplossing die ik las : zet een exit(); onmiddellijk na header("Location: http://www.google.be");


2e oplossing die ik las :

begin uw script met <?php ob_start() ?> en eindig met <?php ob_flush() ?>




ps : ik heb geen echo of html staan voor die eerste header(); functie





PHP:
<?php ob_start() ?>
<?php 
// initialisatie
	$thank_you = 0;
if( $_POST['send_request'] ) { 
	if ($_POST['selectThis'] == 1) {
		header('Location: http://status.e-trust.be/phoenixng/services.cfm?id=1621438045');
		exit();
		$thank_you = 1;
	}
}

else { ?>

<form id="form" method="post" name="form" action="">

<select name="selectThis" size="1" id="selectThis">
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
	<option value="4">4</option>
	<option value="5">5</option>
	<option value="6">6</option>
	<option value="7">7</option>
	<option value="8">8</option>
</select>

<input type="submit" class="knop" value="Find now" /><input name="send_request" type="hidden" id="send_request" value="1" /> 
</form> 

<?php } ?>

<?php ob_flush() ?>


:$

KoenDK

Legacy Member
ik heb dus geen enkele witruimte en die andere zaken uit de sticky heb ik ook reeds nagekeken :$

Linwe

Legacy Member
en is dit een standalone pagina ? of een include van een andere... if so: kijk dan maar eens na of in de bovenliggende pagina('s) geen blanks staan

KoenDK

Legacy Member
dit formulier wordt toegevoegd aan een bestaande html pagina
dit systeem is zo opgebouwd door het CMS


een bestaande pagina (enkel HTML en dergelijke) heeft dus zijn code
en onderaan KAN men een extra php pagina invoegen voor formulieren en dergelijke



basicly : de html code die er boven staat, is onvermijdbaar,
vandaar dat ik het dacht te kunnen oplossen via die <?php ob_start()?>



ik heb dus
html code van de pagina gevolgd door dit formulier (php code)
en aan deze structuur kan ik niets wijzigen

Radiance

Legacy Member
Uw PHP code en die andere HTML komt daar door include()'s in een andere pagina van de CMS?
Dan kan je er scriptgewijs niks aan doen.

Je kan uw php.ini gaan passen of via .htaccess het volgende doen :
Code:
output_buffering = On

KoenDK

Legacy Member
heuh?
als ik die output_buffering = On in mijn htaccess copy paste
dan krijg ik een foutmelding : Internal Server Error :eek:

passero

Legacy Member
als gij in uw pagina ob_start zet, terwijl daarvoor al output is gegenereert door het cms zelf, dan zal het volgens mij niet 100% werken.

Wat je eventueel kan doen, is mss niet de beste oplossing maar het zal werken, is ipv Location(... te zetten, een javascript uit te voeren:

PHP:
<?php 
// initialisatie 
    $thank_you = 0; 
if( $_POST['send_request'] ) { 
    if ($_POST['selectThis'] == 1) { 
       ?>
       Indien u niet doorgelinkt wordt, gelieve <a href="uwLink">hier</a> te klikken
       <script language="javascript">
           document.location.href = "uwLink";
       </script>
       <?php
        exit(); 
        $thank_you = 1; 
    } 
}

Linwe

Legacy Member
KoenDK zei:
basicly : de html code die er boven staat, is onvermijdbaar,
vandaar dat ik het dacht te kunnen oplossen via die <?php ob_start()?>



ik heb dus
html code van de pagina gevolgd door dit formulier (php code)
en aan deze structuur kan ik niets wijzigen

Gevolg: reeds output gegenereerd, header forwarding zal niet lukken. De Javascript optie van passero toepassen lijkt me de simpelste oplossing...

killgore

Legacy Member
Linwe zei:
Gevolg: reeds output gegenereerd, header forwarding zal niet lukken. De Javascript optie van passero toepassen lijkt me de simpelste oplossing...

Of een deftige mvc-structuur opbouwen dmv templates oid.

KoenDK

Legacy Member
ok thanks
probleem is duidelijk en kan denk ik alleen opgelost worden via JS

effe uittesten :)


*edit: thanks guys for this solution!

passero

Legacy Member
killgore zei:
Of een deftige mvc-structuur opbouwen dmv templates oid.

als ge een 3th paety CMS gebruikt dan kan ik me voorstellen dat dit niet evident is...

killgore

Legacy Member
passero zei:
als ge een 3th paety CMS gebruikt dan kan ik me voorstellen dat dit niet evident is...

Meeste deftige cms'en gebruiken een templatesysteem of een andere soort van buffering waar je kan gebruik van maken bij mijn weten.

frenzal

Legacy Member
een ander oplossing om dit soort problemen te vermijden is uw form submitten naar een pagina die geen output heeft, zet daar al uw form logica en redirects.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan