if($debug)
return 'This is not a file: '.$filename.'<br/>';
else
return '';
}
function errorHandler($str){
header('location: '.$_SERVER['REQUEST_URI']);
return "";
}
Больше всего доставило неудобств header('location: '.$_SERVER['REQUEST_URI']); Так и не понял, в каком случае вызывается errorHandler и как он работает, но суть в том, что он срабатывает всегда, даже тогда, когда ошибки нет. И что мы получаем в этом случае? Вечный редирект на себя. Пытался сначала сделать какое-то условие, чтобы header('location не вызывался, но он всегда вызывается. И наверно после часа моих бесполезных велосипедов и свистулек, наконец пришло в голову стоящее решение - удалить header в конце функции. По взрослому, надо с сессий переносить скрипт в базу.
29.01.2014, 15:07
Den1xxx
Цитата:
Сообщение от Degradator
Больше всего доставило неудобств header('location: '.$_SERVER['REQUEST_URI']); Так и не понял, в каком случае вызывается errorHandler и как он работает, но суть в том, что он срабатывает всегда, даже тогда, когда ошибки нет. И что мы получаем в этом случае? Вечный редирект на себя.
Ну так предупреждали же, что лучше на другой адрес.
А гетом можно возвращать имя файла, и при новом ходе записывать этот файл как порченый:
header('location: ./?fatal_error=somefile.php');
29.01.2014, 15:12
alexdrob
Не понял, кто предупреждал? О Чём? Почему лучше? Нужно же открывать требуемую страницу, и в случае, если файл испорчен, игнорировать его? Значит нужно редиректить на ту же, с отключенным файлом?
Даже их кода автора топика видно, что он хочет эту же страницу открыть.
29.01.2014, 17:12
Den1xxx
Цитата:
Сообщение от alexdrob
Значит нужно редиректить на ту же, с отключенным файлом?
Как вы себе это представляете? Если скрипт падает?
Опять туда же, и он опять упадет? Если он не успеет записать флаг до падения — это очень хрупкая дорожка.
Вообще мне кажется нужно при входе в процедуру заранее записывать флаг что файл порченый.
А при успешном выходе из процедуры записывать его в нормальный.
Тогда нормально отработает.
29.01.2014, 17:55
Degradator
Цитата:
Сообщение от Den1xxx
Вообще мне кажется нужно при входе в процедуру заранее записывать флаг что файл порченый.
А при успешном выходе из процедуры записывать его в нормальный.
Тогда нормально отработает.