Forum Webscript.Ru

Программирование => PHP => Тема начата: Jean от 25 Июня 2004, 09:24:39

Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 09:24:39
Помогите, пожалуйста,

обычно чтобы отлавливать ошибки нужно определить свою функцию error_handler, а потом в нужном месте поставить
set_error_handler("error_handler");

(вроде правильно написал)

Но проблема такая:
function error_handler ($level, $message, $file, $line, context)
{
echo "Уровень ошибки: ".$level."
";
echo "Сообщение: ".$message."
";
echo "Файл: ".$file."
";
echo "Строка: ".$line."
";
}

как получить $level, $message, $file, $line не выводя их на экран

то есть вот пример

set_error_handler("error_handler");
eval($scriptbody);
//а вот здесь мне нужно узнать строку и прочее
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 09:38:25
Цитировать
Jean:
как получить $level, $message, $file, $line не выводя их на экран

что ты имеешь ввиду под словом "получить"
Цитировать
Jean:
eval($scriptbody);

не используй eval в своих скриптах вообще никогда в жизни, и втои волосы будут мягкими и шелковистыми.
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 09:41:23
что ты имеешь ввиду под словом "получить"

я имею ввиду записать ее в какую-нибудь переменную, а потом эту переменную использовать, но не выводить на экран просто echo
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 10:13:54
Цитировать
Jean:
я имею ввиду записать ее в какую-нибудь переменную

тебе подсказать оператор присваивания в пхп?
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 10:37:35
я наверно, в хлам тупой :) но все таки, вот примерный код :

$o_line = "";

function error_handler ($level, $message, $file, $line, $context)
{
    $o_line = $line;
}


set_error_handler (\'error_handler\');
//код с ошибкой
echo $o_line;


может я что-то не понял - напиши пожалуйста, как это сделать
Название: set_error_handler
Отправлено: ThE0ReTiC от 25 Июня 2004, 10:43:20
Jean
тогда уж

function error_handler ($level, $message, $file, $line, $context)
{
global $o_line;
$o_line = $line;
}
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 11:22:12
спасибо
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 13:12:32
я считаю, что человеку, незнакомому с проблемой области видимости переменных (т.е. такому, который впервые функцию в глаза видит) рано заниматься собственной обработкой ошибок.
судя по всему, ему нужно всего лишь настроить правильно встроенную обработку ошибок.

[off]wow! козырный номер[/off]
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 13:47:23
>>судя по всему, ему нужно всего лишь настроить правильно
>>встроенную обработку ошибок.


ну и чтобы ты мне предложил?
Название: set_error_handler
Отправлено: ThE0ReTiC от 25 Июня 2004, 14:04:22
Цитировать
Jean:
ну и чтобы ты мне предложил?

например подучить матчасть.
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 14:09:41
не понял, что за матчасть?

я имел ввиду, предложения по поводу правильно встроенной обработки ошибок.

Как еще можно обработать ошибку самому?
Название: set_error_handler
Отправлено: ThE0ReTiC от 25 Июня 2004, 14:12:33
Цитировать
Jean:
что за матчасть?

http://www.php.net/manual/en/ref.errorfunc.php
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 14:14:19
ты обрабатываешь не ошибки, а сообщения о них. это большая разница. Я, например, не вижу никакого смысла запоминать сообщения.

по мне - так только записывать в лог, чтобы потом программер мог смотреть и исправлять код
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 14:34:11
Цитировать
RomikChef:
ты обрабатываешь не ошибки, а сообщения о них. это большая разница. Я, например, не вижу никакого смысла запоминать сообщения.

по мне - так только записывать в лог, чтобы потом программер мог смотреть и исправлять код


вообще мне не только нужно в лог записывать, но и на экран аккуратно выводить (не в самой error_handler),

потому как эта информация не для программера, а для пользователя, не будет же он в (непонятный ему какой и где) лог лезть
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 14:38:15
системные ошибки пхп юзеру сто лет в обед не нужны
что он будет делать с сообщением
cannot open stream - permission denied in ?
распечатает и на стенку повесит?
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 14:40:13
Цитировать
RomikChef:
системные ошибки пхп южеру сто лет в обед не нужны
что он будет делать с сообщением
cannot open stream - permission denied in ?
распечатает и на стенку повесит?


они ему нужны только в том случае, если он напишет скрипт (в textarea например) и попытается запустить
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 14:43:59
ну-ка ну-ка, с этого места поподробнее
что это за юзер такой шибко продвинутый, который скрипты в текстарии пишет?
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 14:46:52
это что ирония?

--------

создает объект типа Скрипт и прописывает ему код, а потом использует этот объект
Название: set_error_handler
Отправлено: ThE0ReTiC от 25 Июня 2004, 14:49:05
Jean
Еще какая.
Вообще это немного идиотизмом попахивает.
Че мелочиться - то?
открой telnet на серваке и не парься - пуская они туда напрямки лезут.
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 14:51:51
Цитировать
Jean:
это что ирония?

это вопрос.
если ты делаешь для себя - хоть и не секурно, но ладно
но если для юзера с улицы - это идиотизм.
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 14:57:50
Цитировать
RomikChef:
если ты делаешь для себя - хоть и не секурно, но ладно
но если для юзера с улицы - это идиотизм


для юзера с улицы и "секурно"
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 15:00:34
не совсем с улицы
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 15:01:04
Цитировать
"секурно"

это тебе подсказал кто, или ты сам догадался?
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 15:04:13
ты сам это написал выше, если я правильно понял, что ты имеешь ввиду

у меня есть проверка на безопасность в таком Скрипте, и каждому подряд не будет доступа к его редактированию, только админам
Название: set_error_handler
Отправлено: Меняздесьдавнонет от 25 Июня 2004, 15:17:18
Цитировать
Jean:
у меня есть проверка на безопасность в таком Скрипте

это не проверка, а фуфло.
еваля водимый код, о безопасности можешь вообще не заикаться.
я не знаю, что ты делаешь, и зачем тебе такой изврат, но запоммни - про слово "безопасность" просто забудь
Название: set_error_handler
Отправлено: Jean от 25 Июня 2004, 15:32:11
не хочу со всеми вами тут ссориться :))

спасибо что помогли, а это действительно так
Название: set_error_handler
Отправлено: hanslinger от 25 Июня 2004, 18:31:16
[OFF]бред какой-то...[/OFF]
Название: set_error_handler
Отправлено: ThE0ReTiC от 25 Июня 2004, 18:35:28
все.
закрыли тему.