EDIT: Shorttags toegevoegd voor highlights
Bij mijn website heb ik een shop, zoals al eerder vermeld.
Bij deze shop word je na aankoop doorgestuurd naar een &p=


<?
if(isset($_POST['twee'])){
if($data->callcredits >= 2){
mysql_query("UPDATE `users` SET `callcredits`=`callcredits`-'2', `vipdays`=`vipdays`+'30' WHERE `login`='$data->login'");
mysql_query("INSERT INTO shoplogs(login,ip,date,wat,hoeveel,power,geld,bijaf) values('" . $data->login . "','" . $_SERVER['REMOTE_ADDR'] . "',NOW(),'Callcredits','1','0','20','Eraf')");
   header("Location: index.php?a=buycredits&p=vipdaystwee");
}
}
?>


<?																<tr class="top">
<td align="center" width="6%" class="subtable">
<img width="16" src='images/icons_gif/star_big.gif' alt='30 dagen betaald account' border='0'></td>
<td class="subtable"> 30 dagen betaald account	</td>														<td class="subtable">Tijdelijk 2 Credits (normaal 20)</td>
<td align="center" width="6%" class="subtable">
<?if($data->callcredits < 2){?>																				<font class="callshop_kopen_no">&nbsp;Kopen&nbsp;</font>
?>


Bij mijn vorige hosting werkte dit prima, maar bij mijn nieuwe hosting werkt dit opeens niet meer.
Hij blijft gewoon op de pagina ?a=buycredits
Hoe kan dit?

Is het ook mogelijk om de klant op een andere manier door te sturen?
sommige servers bufferen automagisch alle output tot het script klaar is, of vervelender: tot een bepaalde grootte aan data bereikt is.

Waarom vervelend?
Als je script prima werkt voor Jan die op Plein 1 woont, maar een header probleem geeft als Johannes-Hubertus wonende op Laan Van Meerdervoort 1203

Vind dan maar eens uit dat bij de een de buffer nog niet vol was, maar bij het lange adres + naam wel....
Officieel moet een header('Location: ...') ook een volledige URL bevatten.
Daarnaast moet eigenlijk altijd na een header('Location: ...') aanroep een exit staan om ervoor te zorgen dat verdere executie van code niet plaatsvindt. Dit is volgens mij een van de meest wijdverbreide misverstanden - dat een header('Location: ...') je meteen redirect. Dit is NIET het geval. Je wordt pas doorgestuurd nadat het script is afgelopen en er output en daarmee de header(s) verzonden worden.

Oftewel
<?php
if (<super important check> === false) {
    // we are not supposed to be here!
    header('Location: http://www.disneyworld.com');
}
// DEZE CODE WORDT OOK UITGEVOERD OOK AL LEVERDE <super important check> FALSE OP!
<super important code>
// EN HIERNA WORDT JE DOORGESTUURD NAAR disneyworld... whee~
?>

Reageren