PHP redirect
April 3rd, 2008
1 comment
Случвало ли ви се е да ползвате:
header('Location: http://google.com/');
и в този момента да ви се отговори:
Cannot modify header information – headers already sent by …
и тогава се налага да го заменяте с meta redirect или някакъв redirect с javascript, а също и ob_start(); ob_end_flush(); което си е дразнещо.
Ето една алтернатива:
<?php function redirect($url){ if (!headers_sent()){ header('Location: '.$url); } else { echo '<script type="text/javascript">'; echo 'window.location.href="'.$url.'";'; echo '</script>'; echo '<noscript>'; echo '<meta http-equiv="refresh" content="0;url='.$url.'" />'; echo '</noscript>'; } } ?>
Тази функция проверява дали са изпратени header-ите, ако не са redirect-ва с PHP функцията “header”, ако са изпратени вече redirect-a се прави с javascript, а ако по някаква случайност потребителя няма support на javascript, redirect-a става с meta refresh на HTML
За тези които умуват още, ползва се така:
redirect('http://google.com/');
