set_error_handler

Avenger

Guest
Критика? Нате вам критику:
Добавить надо бы еще возможность не переписывать лог-файл, а добавлять в конец (да, я знаю, что это на 0,5 минуты работы, но все же...). :)
 

Sababa

Guest
интересно, на кого расчитана эта статья?

если для новичков, то мало, надо больше объяснений, если на средний класс, то ничего
 

LexeY

Guest
ошибочка в скрипте read.php
строчка 63: $error_types[$row[1]]
наверное лучше заменить на $error_type[$row[1]] :)
 

tony2001

TeaM PHPClub
>а добавлять в конец
специально сделано по-другому.
LOG_ROTATE смотри - при достижении максимального размера будут все файлы сдвигаться на 1 вниз, предыдущий лог писаться в log_file.1, а новый - в log_file.
чтобы не вздумали работать с 500-метровыми файлами.
хотя, если выставите максимальный размер в 500000 - нет проблем.


>строчка 63: $error_types[$row[1]]
угу, глюк...

>если для новичков
для новичков ФАКи.
это, имхо, для продвинутых новичков.
хотя это не мне судить.
 

Avenger

Guest
Автор оригинала: tony2001
>а добавлять в конец
специально сделано по-другому.
LOG_ROTATE смотри - при достижении максимального размера будут все файлы сдвигаться на 1 вниз, предыдущий лог писаться в log_file.1, а новый - в log_file.
чтобы не вздумали работать с 500-метровыми файлами.
хотя, если выставите максимальный размер в 500000 - нет проблем.
Сорри, глючу.. :) Как обычно - просто нет времени просматривать код... :)
 

webdeveloper

Guest
Классная стятья. Все очнь подробно написано. Правда остался вот такой вопрос - допустим я пишу так:
PHP:
<?php

...

error_reporting (E_ALL);
set_error_handler ("Page_OnError");

...

$id = @$_GET["id"];
if($id >0)
{
	// do something
}
?>
так вот если мы не передели настраницу id то получается ошибка и выводится такое сообщение:

Error Numebr - 8
Error File - D:\Server\www.developer.com\www\siteadmin\galleries\index.php
Error Line - 23
Error Message - Undefined index: id


Я пробовал ообойти эту проблему следующим образом
PHP:
$id = null;
if (in_array ("id",$_GET)) $id = $_GET["id"];
if(is_int($id))
{
	//do something
}
Но к сожалению это не дало требуемого результата. Сообщение об ошибке пропало но и id не устанавливается тоже. Даже когда оно передается на страницу.

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

si

Administrator
Переменные перед использованием надо инициализировать.

Например так:
PHP:
<?
  $id = issset($_GET['id'])?(int)$_GET['id']:0;
?>
 

webdeveloper

Guest
Автор оригинала: si
Переменные перед использованием надо инициализировать.

Например так:
PHP:
<?
  $id = issset($_GET['id'])?(int)$_GET['id']:0;
?>
Спасибо большое - все заработало.

Я написал функцию которая читает $_GET и $_POST

PHP:
<?
function getGetString($name)
{
  $value = isset ($_GET[$name]) ? (string)$_GET[$name] : "";
  return $value;
}
function getPostString($name)
{
  $value = isset ($_POST[$name]) ? (string)$_POST[$name] : "";
  return $value;
}
...

$name = getPostString("txtName");

?>
 

si

Administrator
еще советую туда вставить проверку на magic_quotes, и тогда вообще все будет хорошо :)

P.S еще наверно стоит сделать тоже самое для integer
 

webdeveloper

Guest
Автор оригинала: si
еще советую туда вставить проверку на magic_quotes, и тогда вообще все будет хорошо :)

P.S еще наверно стоит сделать тоже самое для integer
Я тоже сначала так подумал но потом решил пройти немного другим путем. Возвращать не конкретный тип данных а то что там есть или NULL

А вот как magic_quotes проверить я что то не соображу

if (!get_magic_quotes_gpc ()) $value = addslashes ($value);

так?

PHP:
function getPostParameter($name)
{
	$value = isset ($_POST[$name]) ? $_POST[$name] : null;
	if (!get_magic_quotes_gpc ()) $value = addslashes ($value);
	return $value;
}
function getGetParameter($name)
{
	$value = isset ($_GET[$name]) ? $_GET[$name] : null;
	if (!get_magic_quotes_gpc ()) $value = addcslashes ($value);
	return $value;
}
 
Сверху