Глава 22. КТО И ЧТО МОЖЕТ ДЕЛАТЬ
В БАЗЕ ДАННЫХ?


В этой главе вы научитесь работать с привилегиями. Как сказано в Главе 2, SQL используется обычно в средах, которые требуют распознавания пользователей и различий между пользователями систем.

Вообще говоря, администраторы баз данных сами создают пользователей и дают им привилегии.
С другой стороны - пользователи, которые создают таблицы, сами имеют права на управление этими таблицами. Привилегии это то, что определяет, может ли указанный пользователь выполнить данную команду. Имеется несколько типов привилегий, соответствующих нескольким типам операций. Привилегии даются и отменяются двумя командами SQL: GRANT (ДОПУСК) и REVOKE (ОТМЕНА). Эта глава покажет вам, как эти команды используются.

ПОЛЬЗОВАТЕЛИ

Каждый пользователь в среде SQL имеет специальное идентификационное имя или номер. Терминология везде разная, но мы выбрали (следуя ANSI) ссылку на имя или номер как на Идентификатор (ID) доступа. Команда, посланная в базе данных, ассоциируется с определённым пользователем; или иначе - специальным Идентификатором доступа. Поскольку это относится к БД SQL, ID разрешения это имя пользователя, и SQL может использовать специальное ключевое слово USER, которое ссылается на Идентификатор доступа, связанный с текущей командой. Команда интерпретируется и разрешается (или запрещается) на основе информации, связанной с Идентификатором доступа пользователя, подавшего команду.

РЕГИСТРАЦИЯ

В системах с многочисленными пользователями имеется некоторый вид процедуры входа в систему, которую пользователь должен выполнить, чтобы получить доступ к компьютерной системе. Эта процедура определяет, какой ID доступа будет связан с текущим пользователем. Обычно каждый человек, использующий БД, должен иметь свой собственный ID доступа и при регистрации превращается в действительного пользователям. Однако часто пользователи, имеющие много задач, могут регистрироваться под различными ID доступа, или наоборот - один ID доступа может использоваться несколькими пользователями. С точки зрения SQL нет никакой разницы между этими двум случаями; он воспринимает пользователя просто как его ID доступа.

БД SQL может использовать собственную процедуру входа в систему или она может позволить другой программе, вроде операционной системы (основная программа которая работает на вашем компьютере), обрабатывать файл регистрации и получать ID доступа из этой программы. Тем или другим способом, но SQL будет иметь ID доступа, чтобы связать его с вашими действиями, а для вас будет иметь значение ключевое слово USER.

ПРЕДОСТАВЛЕНИЕ ПРИВИЛЕГИЙ

Каждый пользователь БД SQL имеет набор привилегий. Это то, что пользователю разрешается делать (возможно это - файл регистрации, который может рассматриваться как минимальная привилегия). Эти привилегии могут изменяться со временем: новые - добавляться, старые - удаляться. Некоторые из этих привилегий определены в ANSI SQL, но имеются и дополнительные привилегии, которые также являются необходимыми.

SQL-привилегий, как определено ANSI, недостаточно в большинстве ситуаций реальной жизни. С другой стороны, типы привилегий, которые необходимы, могут видоизменяться, в зависимости от используемой системы, относительно которой ANSI не может дать никаких рекомендаций. Привилегии, которые не являются частью стандарта SQL, могут использовать похожий синтаксис, не полностью совпадающий со стандартом.

СТАНДАРТНЫЕ ПРИВИЛЕГИИ

SQL-привилегии, определённые ANSI, это привилегии объекта. Это означает, что пользователь имеет привилегию для выполнения данной команды только на определенном объекте в БД. Очевидно, что привилегии должны различать эти объекты, но система привилегий, основанная исключительно на привилегиях объекта, не может адресовать всё, что нужно SQL, как мы увидим позже в этой главе.

Привилегии объекта связаны одновременно и с пользователями, и с таблицами. То есть привилегия дается определенному пользователю в указанной таблице, базовой таблице или представлении. Вы должны помнить, что пользователь, создавший таблицу (любого вида), является владельцем этой таблицы.

Это означает, что пользователь имеет все привилегии в этой таблице и может передавать привилегии другим пользователям этой таблицы.

Вот привилегии, которые можно назначить пользователю:

SELECT         Пользователь может выполнять запросы в таблице.



INSERT         Пользователь может выполнять команду INSERT в таблице.



UPDATE         Пользователь может выполнять команду UPDATE в таблице.

               Вы можете ограничить эту привилегию для определенных столбцов таблицы.



DELETE	       Пользователь с этой привилегией может выполнять команду DELETE в таблице.



REFERENCES     Пользователь определить внешний ключ, который использует один или более

               столбцов этой таблицы, как родительский ключ.

               Вы можете ограничить эту привилегию для определённых 

	       столбцов. (Смотрите в Главе 19 

	       подробности относительно внешнего ключа и родительского ключа.)

Кроме того, вы столкнётесь с такими нестандартными привилегиями объектов, как, например, INDEX (ИНДЕКС), дающей право создавать индекс в таблице, SYNONYM (СИНОНИМ), дающей право создавать синоним для объекта, который будет объяснён в Главе 23, и ALTER (ИЗМЕНИТЬ), дающей право выполнять команду ALTER TABLE в таблице.

Механизм SQL назначает пользователям эти привилегии с помощью команды GRANT.

КОМАНДА GRANT

Предположим, что пользователь Diane имеет таблицу Заказчиков и хочет разрешить пользователю Adrian выполнить запрос к ней. Diane должна в этом случае ввести следующую команду:

GRANT INSERT ON Salespeople TO Diane;

Теперь Adrian может выполнить запросы к таблице Заказчиков. Без этой привилегии он может только выбирать значения, но не может выполнить любое действие, которые влияло бы на значения в таблице Заказчиков (включая использование таблицы Заказчиков в качестве родительской таблицы внешнего ключа, что ограничивает изменения, которые можно выполнять со значением в таблице Заказчиков).

Когда SQL получает команду GRANT, он проверяет привилегии пользователя, подавшего эту команду, чтобы определить, допустима ли команда GRANT.

Adrian самостоятельно не может выдать эту команду. Он также не может предоставить право SELECT другому пользователю: таблица еще принадлежит Diane (далее мы покажем, как Diane может дать право Adrian предоставлять SELECT другим пользователям).

Синтаксис - тот же самый, что и для предоставления других п8528 107192919 SWFDisplayItem->skewYTo
Учебник РНР
НазадВперёд

SWFDisplayItem->skewYTo

(unknown)

SWFDisplayItem->skewYTo - устанавливает Y-наклон.

Описание

void swfdisplayitem->skewyto (float degrees)

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

swfdisplayitem->skewyto() устанавливает y-skew в градусах degrees. Если degrees равен 1.0, это означает наклон на 45 градусов вперёд. Больше - вперёд, меньше - назад.

Объектом может быть swfshape()-, swfbutton()-, swftext()- или swfsprite()-объект. Он обязан быть добавлен с использованием swfmovie->add().

См. также swfdisplayitem->skewy(), swfdisplayitem->skewx() и swfdisplayitem->skewxto().


Назад Оглавление Вперёд
SWFDisplayItem->skewY ВверхSWFDisplayItem

Hosted by uCoz
8528 107192919 Компилирование FileZilla

Компилирование FileZilla

Для компилирования FileZilla вам понадобятся следующие программы и утилиты:

Вы можете загрузить последнюю версию HTML Help Workshop с  Microsoft Website. После установки вы должны подготовить DevStudio: перейдите на Tools, Options, Directories, затем (предполагая, что вы установили HTML Help Workshop в C:\Program Files\HTML Help Workshop):

Для компилирования установочного скрипта вы должны загрузить и установить NSIS. По установки NSIS щёлкните правой клавишей мыши файл FileZilla.nsi в Explorer и выберите "Compile NSI".

Hosted by uCoz
8528 107187861 8528 107192919 swf_closefile
Учебник РНР
НазадВперёд

swf_closefile

(PHP 4)

swf_closefile - закрывает текущий Shockwave Flash-файл.

Описание

void swf_closefile ([int return_file])

Закрывает файл, открытый функцией swf_openfile(). Если параметр return_file установлен, то возвращается содержимое SWF-файла.

Пример 1. Создание простого flash-файла на основе
пользовательского ввода и вывод его и сохранение в БД
<?php

// переменная $text отправляется пользователем

// Глобальные переменные для доступа к БД
// (используются в функции swf_savedata())
$DBHOST = "localhost";
$DBUSER = "sterling";
$DBPASS = "secret";

swf_openfile ("php://stdout", 256, 256, 30, 1, 1, 1);

    swf_definefont (10, "Ligon-Bold");
        swf_fontsize (12);
        swf_fontslant (10);
    
    swf_definetext (11, $text, 1);
    
    swf_pushmatrix ();
        swf_translate (-50, 80, 0);
        swf_placeobject (11, 60);
    swf_popmatrix ();

    swf_showframe ();
  
    swf_startdoaction ();
        swf_actionstop ();
    swf_enddoaction ();

$data = swf_closefile (1);

$data ?
  swf_savedata ($data) :
  die ("Error could not save SWF file");

// void swf_savedata (string data)
// Сохранить сгенерированный файл в БД
// для последующего запрашивания
function swf_savedata ($data)
{
    global $DBHOST, 
           $DBUSER,
           $DBPASS;
    
    $dbh = @mysql_connect ($DBHOST, $DBUSER, $DBPASS);

    if (!$dbh) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }

    $stmt = "INSERT INTO swf_files (file) VALUES ('$data')";

    $sth = @mysql_query ($stmt, $dbh);

    if (!$sth) {
        die (sprintf ("Error [%d]: %s",
                      mysql_errno (), mysql_error ()));
    }

    @mysql_free_result ($sth);
    @mysql_close ($dbh);
}
?>

Назад Оглавление Вперёд
swf_addcolor Вверхswf_definebitmap
Hosted by uCoz
8528 107192919 odbc_result
Учебник РНР
НазадВперёд

odbc_result

(PHP 3>= 3.0.6, PHP 4 )

odbc_result - получает результирующие данные.

Описание

string odbc_result (resource result_id, mixed field)

Возвращает содержимое поля.

field может быть целым числом, содержащим номер столбца нужного вам поля; либо строкой, содержащей имя поля. Например:
$item_3 = odbc_result ($Query_ID, 3);
$item_val = odbc_result ($Query_ID, "val");

Первый вызов odbc_result() возвращает значение третьего поля текущей записи результата запроса. Второй вызов функции odbc_result() возвращает зн