Функции Язык программирования PHP

get_object_vars

(PHP 4)

get_object_vars - возвращает ассоциативный массив из свойств объекта.

Описание

array get_object_vars (object obj)

Эта функция возвращает ассоциативный массив свойств определённого специфицированного объекта obj. Если переменным, объявленным в классе, экземпляром которого является obj, не присвоены значения, они не будут возвращены в этом массиве.
Пример 1. Использование get_object_vars()
<?php 
class Point2D { var $x, $y; var $label; function Point2D($x, $y) { $this->x 
= $x; $this->y = $y; } function setLabel($label) { $this->label = $label; 
} function getPoint() { return array("x" => $this->x, "y" => $this->y, 
"label" => $this->label); } } // "$label" объявлена, но не определена 
$p1 = new Point2D(1.233, 3.445); print_r(get_object_vars($p1)); $p1->setLabel("point 
#1"); print_r(get_object_vars($p1)); ?>

Эта программа напечатает:

Array 
( [x] => 1.233 [y] => 3.445 ) Array ( [x] => 1.233 [y] => 3.445 
[label] => point #1 )

См. также get_class_methods() и get_class_vars().


Назад Оглавление Вперёд
get_declared_classes Вверх get_parent_class

Инъекция SQL

Многие web-разработчики не в курсе того, как запросы SQL могут быть подделаны, и считают, что SQL-запрос это надёжная команда.
SQL-запросы могут обойти управление доступом, стандартную аутентификацию и проверку авторизации, а некоторые SQL-запросы могут даже дать доступ к командам ОС хоста.

Direct SQL Command Injection это такая техника, когда взломщик создаёт или изменяет текущие команды SQL для получения доступа к скрытым данным, их переопределения или даже для выполнения опасных команд системного уровня на хосте БД. Это выполняется с помощью приложения, принимающего пользовательский ввод, и сочетания его со static-параметрами для построения SQL-запроса. Следующие примеры (к сожалению...) основаны на реальных фактах.

Благодаря отсутствию проверки ввода и соединения с БД или поведению superuser'а или того, кто может создавать пользователей, взломщик может создать superuser'а в вашей БД.
Пример 4-6. Разделение результата выполнения запроса на страницы...
и создание superuser'ов (PostgreSQL и MySQL)
$offset = argv[0]; // видите, никакой проверки ввода! $query = "SELECT id, 
name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; // с PostgreSQL $result 
= pg_exec($conn, $query); // с MySQL $result = mysql_query($query);