header werkt niet

Status
Niet open voor verdere reacties.

softvieuw

Gebruiker
Lid geworden
15 mrt 2013
Berichten
29
beste helpmij'ers,

ik heb een index pagina waar ik op een pagina wil werken, op deze manier: index.php?page=home.

nou heb ik op de index.php?page=register een registreer pagina, na het registreren is er in de database een kalom toegevoegd en de melding "gelukt, u word doorverwezen komt".

boven die echo staat het volgende:
PHP:
  header('refresh: 3; url="test.php"');

maar na tien minuten wachten gebeurt er nog niks :/
ik host me website bij versio,

iemand een idee wat dit kan zijn?

mvg,

softvieuw
 
Zet error_reporting en display_errors eens aan.
Ik vermoed dat de redirect stuk loopt omdat er HTML voor zal zitten.
 
bedankt voor je reactie,

in mijn localhost via xampp werkt het wel :/

maar nu krijg ik inderdaad een error: :$
PHP:
Warning: Cannot modify header information - headers already sent by (output started at /home/.... on line 157

hoe moet ik dat oplossen?

mvg

softvieuw
 
je mag geen enkele echo of print hebben staan voor
header('refresh: 3; url="test.php"');


nu kan het zijn dat er ook
<?php staat(een spatie voor uw <?php of een enter)dus php zal dan standaard headers gaan afsturen en een enter

dus dit betekend headers already send
u kan tijdelijk dit gebruiken
PHP:
if (!headers_sent()){
			//print('Location: http://'.$_SERVER['SERVER_NAME'].$url);
			header('Location: http://'.$_SERVER['SERVER_NAME'].$url);
	die('<meta http-equiv="refresh" content="0;URL=http://'.$_SERVER['SERVER_NAME'].$url.'/>";');
else {
	die('Redirect Headers error to send <a href="http://'.$_SERVER['SERVER_NAME'].$url.'" >here the link</a>');
}
 
Dat is wel een heel slechte oplossing die kenikavanbis geeft.

De enige en beste oplossing is om ervoor te zorgend at er voor je header/setcookie/session_start-functie GEEN HTML te plaatsen. De foutmelding geeft met na de dubbele punt aan op welke regel het plaatsvindt.

Dus de oorzaak bij de bron aanpakken, en geen rare fratsen gebruiken met die() of refresh-metatags...
 
er staat niet voor niets tijdelijk
als je veel gebruikers hebt in de site staat live dien je dit soms toe te passen als je het niet onmiddelijk ziet .
en bij mij zit die in een functie(denk aan de veiligheid van de die())wat als ze header zouden uitzetten en ectra.
tja ieder zijn mening erover.
 
Of je werkt lekker even op een testlocatie om de fout op te lossen, en vervolgens live te zetten ;).
 
beste,

bedankt voor u reacties,

php4u: offline werkt het gewoon wel, daar stuurt die wel door:/

dit staat er op line 13 t/m 22:

PHP:
echo "
    <head>
    <link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">
  <meta charset=\"utf-8\">
  <title>$page</title>
</head>
<div class=\"BoxContainer\">
   <div class=\"BoxHeader\">
   </div>
   <hr />";

ik heb dit juist bovenaan geplakt omdat die css voor iedere pagina is enz, en omdat iedere pagina in de boxcontainer moet komen,

hoe moet ik dit dan oplossen op een goede manier, en niet op een tijdelijke manier? :)

mvg,

softvieuw
 
je moet geen echo voor een header plaatsen. Zelfs een witruimte in HTML is al funest.
Dus gewoon even de logica aanpassen.

Verder nog een tip. Als je single-quotes ( ' ) gebruikt, hoef je niet steeds je dubbele te escapen met een \.
Nog beter is om alleen $page in PHP te echo'en, zonder de rest van die HTML. Bespaart weer wat geheugen op de server.
 
hoe moet dat dan?
want ik moet natuurlijk eerst een pagina maken en daarna pas de inhoud...

en als je registratie pagina na de inlog heb in het script, dan staan er toch sowieso al echo's van dat andere deel?

mvg

soft
 
Het belangrijkste is de logica. Voer eerst de code uit met de headers, en daarna de rest.
 
Probeer dit eens
PHP:
$url1='link van je pagina';

header("Refresh: 3; URL=$url1");
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan