webdeveloper
Guest
Обработка входных данных
На написание этого примера меня натолкнула проблема с которой я столкнулся два дня назад.
Следуя статье написаной tony2001 я решил наконец то сделать нормальную обработку ошибок в своем движке.
При этом я столкнулся с проблемой, суть которой состояла в том, что если вы пытаетесь обработать параметр, котроый должен был быть передан на страницу, но какой то причине передан небыл, то получается ошибка.
Пример:
В результате если мы попали на нашу страницу по ссылке http://somehost.com/somepage.php?id=12 то все работает, но если по какой то причине параметр не был передан (http://somehost.com/somepage.php) то тогда нас ждет ссобщение об ошибке подобного вида:
Error Numebr - 8
Error File - D:\Server\www.developer.com\somepage.php
Error Line - 23
Error Message - Undefined index: id
Что заначит, что в массиве $_GET не найден элемент с индексом id. Иными словами, параметр id в массиве $_GET отсутсвует.
По совету si были предприняты некоторые шаги, для решения этой ситуации и в итоге получилось вот это.
В данном класе содержатся методы позволяющие получить занчения переменных которые переданы на страницу, при этом, по совету si, в зависимости от того, включены ли magic quotes или нет, эти переменные обрабатываются функцией addcslashes()или нет, что позволяет избежать проблем, при последующем использовании этих переменных в SQL запросах.
Теперь мы можем смело включать этот класс в любой РНР файл в котором предпологается работать с формами или получать какие то параметры методами GET или POST.
Ну и напоследок пример использования:
На написание этого примера меня натолкнула проблема с которой я столкнулся два дня назад.
Следуя статье написаной tony2001 я решил наконец то сделать нормальную обработку ошибок в своем движке.
При этом я столкнулся с проблемой, суть которой состояла в том, что если вы пытаетесь обработать параметр, котроый должен был быть передан на страницу, но какой то причине передан небыл, то получается ошибка.
Пример:
PHP:
<?php
...
error_reporting (E_ALL);
set_error_handler ("Page_OnError");
...
$id = $_GET["id"];
if($id >0)
{
// do something
}
?>
Error Numebr - 8
Error File - D:\Server\www.developer.com\somepage.php
Error Line - 23
Error Message - Undefined index: id
Что заначит, что в массиве $_GET не найден элемент с индексом id. Иными словами, параметр id в массиве $_GET отсутсвует.
По совету si были предприняты некоторые шаги, для решения этой ситуации и в итоге получилось вот это.
PHP:
<?php
class UserInput
{
/**
* getPostParameter()
*
* @param $name
* @return void
**/
function getPostParameter($name)
{
$value = isset ($_POST[$name]) ? $_POST[$name] : null;
if (!get_magic_quotes_gpc ()) $value = addslashes ($value);
return $value;
}
/**
* getGetParameter()
*
* @param $name
* @return void
**/
function getGetParameter($name)
{
$value = isset ($_GET[$name]) ? $_GET[$name] : null;
if (!get_magic_quotes_gpc ()) $value = addcslashes ($value);
return $value;
}
}
?>
Теперь мы можем смело включать этот класс в любой РНР файл в котором предпологается работать с формами или получать какие то параметры методами GET или POST.
Ну и напоследок пример использования:
PHP:
<?php
...
error_reporting (E_ALL);
set_error_handler ("Page_OnError");
...
include_once("classUserInput.php");
$in = new UserInput();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$id = $in->getPostParameter("txtID");
}
else {
$id = $in->getGetParameter("id");
}
if($id >0)
{
// do something
}
?>