' foreach 'が失敗したかどうかを検出する方法が必要です。失敗した場合は、現在の' else 'にあるのと同じエラーメッセージを繰り返します。
<?php
if(file_exists('redirects.xml')) {
$xml = simplexml_load_file('redirects.xml');
if(isset($_GET['r']) && $_GET['r'] != '' && !is_array($_GET['r'])) {
foreach($xml->short as $shorts) {
if($shorts->name == $_GET['r']) {
header('Location: '.$shorts->url);
break;
}
}
}
else {
header("refresh:2;url=http://www.wlatw.co/");
echo '<div align="center" style="font-weight: bolder; font-size: 24px;">Malformed URL</div><div align="center" style="font-weight: bolder; font-size: 16px;">Redirecting...</div>';
}
}
?>