@Pista

Как вместо текста, сделать редирект в php? const ERROR = редирект?

const ERROR = 'Error, turn on debug mode to see the reason.';

как в этой строке заменить 'Error, turn on debug mode to see the reason.'; на код редиректа.
Вообщем нужно не текст этот показывать при ошибках, а редирект на урл.
  • Вопрос задан
  • 57 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
В этой строке — никак.
Нужно найти место, где она используется и вставить редирект туда.
Ответ написан
glaphire
@glaphire Куратор тега PHP
PHP developer
Нужно найти место, где вызывалась эта константа и переписать код на использование редиректа.
Надо найти соответствие урла в браузере с обработчиком этого урла в коде (это или просто php файл, или контроллер с методом экшена, если речь про фреймворк).
В документации по функции header есть упоминание в комментариях, как делать 301й редирект.
Ответ написан
@rPman
Если я верно понял проблему - никак.

Но, можно воспользоваться хаком, не определять константу ERROR и при каждой попытке доступа к ней будет возникать ошибка 'Use of undefined constant', которую можно отловить колбеком set_error_handler
set_error_handler(function(int $errno , string $errstr , string $errfile, int $errline, array $errcontext)
{
echo 'ERROR: $errno='.$errno.' $errstr ='.json_encode($errstr ).' $errfile='.json_encode($errfile).' $errline='.$errline.PHP_EOL; // .' $errcontext='.var_export($errcontext)
});

test;
test;

ERROR: $errno=2 $errstr ="Use of undefined constant test - assumed 'test' (this will throw an Error in a future version of PHP)" $errfile="C:\\W\\test\\php\\a.php" $errline=8
ERROR: $errno=2 $errstr ="Use of undefined constant test - assumed 'test' (this will throw an Error in a future version of PHP)" $errfile="C:\\W\\test\\php\\a.php" $errline=9


т.е. если ваш код не успеет ничего вывести, в колбеке выдавайте нужный header и прекращайте выполнение
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 150 000 до 190 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
LAPTOP.RU Москва
от 130 000 до 170 000 ₽
08 мар. 2021, в 10:02
75000 руб./за проект
08 мар. 2021, в 10:00
700 руб./за проект
08 мар. 2021, в 08:37
3000 руб./за проект