SQLite3::setAuthorizer
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
SQLite3::setAuthorizer
Референца за `sqlite3.setauthorizer.php` со подобрена типографија и навигација.
SQLite3::setAuthorizer
(PHP 8)
SQLite3::setAuthorizer — Конфигурира повикување за да се користи како овластувач за ограничување на она што може да го направи една изјава
= NULL
Поставува повикување што ќе го повика SQLite секогаш кога ќе се изврши дејство (читање, бришење, ажурирање, итн.). Ова се користи при подготовка на SQL изјава од недоверлив извор за да се осигура дека SQL изјавите не се обидуваат да пристапат до податоци што не им е дозволено да ги видат, или дека не се обидуваат да извршат злонамерни изјави што ја оштетуваат базата на податоци. На пример, апликацијата може да му дозволи на корисникот да внесува произволни SQL прашања за евалуација од страна на базата на податоци. Но, апликацијата не сака корисникот да може да прави произволни промени во базата на податоци. Потоа, овластувач може да се стави на место додека се подготвува SQL внесено од корисникот, што забранува сè освен SELECT изјави.
Повикувањето за овластувач може да се повика повеќе пати за секоја изјава подготвена од SQLite. А SELECT or UPDATE прашање ќе го повика овластувачот за секоја колона што би била прочитана или ажурирана.
Овластувачот се повикува со до пет параметри. Првиот параметар секогаш се дава и е int (код на дејство) што одговара на константа од
SQLite3. Другите параметри се поминуваат само за некои дејства. Следната табела ги опишува вториот и третиот параметар според дејството:
| Дејство | Втор параметар | Трет параметар |
|---|---|---|
SQLite3::CREATE_INDEX | Име на индекс | Име на табела |
SQLite3::CREATE_TABLE | Име на табела | null |
SQLite3::CREATE_TEMP_INDEX | Име на индекс | Име на табела |
SQLite3::CREATE_TEMP_TABLE | Име на табела | null |
SQLite3::CREATE_TEMP_TRIGGER | Име на тригер | Име на табела |
SQLite3::CREATE_TEMP_VIEW | Име на приказ | null |
SQLite3::CREATE_TRIGGER | Име на тригер | Име на табела |
SQLite3::CREATE_VIEW | Име на приказ | null |
SQLite3::DELETE | Име на табела | null |
SQLite3::DROP_INDEX | Име на индекс | Име на табела |
SQLite3::DROP_TABLE | Име на табела | null |
SQLite3::DROP_TEMP_INDEX | Име на индекс | Име на табела |
SQLite3::DROP_TEMP_TABLE | Име на табела | null |
SQLite3::DROP_TEMP_TRIGGER | Име на тригер | Име на табела |
SQLite3::DROP_TEMP_VIEW | Име на приказ | null |
SQLite3::DROP_TRIGGER | Име на тригер | Име на табела |
SQLite3::DROP_VIEW | Име на приказ | null |
SQLite3::INSERT | Име на табела | null |
SQLite3::PRAGMA | Име на прагма | Првиот аргумент што се поминува на прагмата, или null |
SQLite3::READ | Име на табела | Име на колона |
SQLite3::SELECT | null | null |
SQLite3::TRANSACTION | Операција | null |
SQLite3::UPDATE | Име на табела | Име на колона |
SQLite3::ATTACH | Име на датотека | null |
SQLite3::DETACH | Име на база на податоци | null |
SQLite3::ALTER_TABLE | Име на база на податоци | Име на табела |
SQLite3::REINDEX | Име на индекс | null |
SQLite3::ANALYZE | Име на табела | null |
SQLite3::CREATE_VTABLE | Име на табела | Име на модул |
SQLite3::DROP_VTABLE | Име на табела | Име на модул |
SQLite3::FUNCTION | null | (PHP 8) |
SQLite3::SAVEPOINT | Операција | Име на функција |
SQLite3::RECURSIVE | null | null |
Име на точка на спасување"main",
"temp"4-тиот параметар ќе биде името на базата на податоци (
5-тиот параметар до callback функцијата на овластувачот е името на највнатрешниот тригер или приказ што е одговорен за обидот за пристап или null ако овој обид за пристап е директно од SQL код на највисоко ниво.
Кога callback функцијата враќа SQLite3::OK, тоа значи дека бараната операција е прифатена. Кога callback функцијата враќа SQLite3::DENY, повикот што го активираше овластувачот ќе пропадне со порака за грешка што објаснува дека пристапот е одбиен.
Ако кодот на дејството е SQLite3::READ и callback функцијата враќа
SQLite3::IGNORE , тогаш подготвената изјава е конструирана да замени null вредност наместо колоната на табелата што би била прочитана ако SQLite3::OK било вратено. Враќањето
SQLite3::IGNORE може да се користи за да се одбие пристапот на недоверлив корисник до индивидуални колони на табела.
Кога табелата е реферирана од SELECT но не се извлечени вредности на колони од таа табела (на пример во прашање како "SELECT count(*) FROM
table") тогаш SQLite3::READ callback функцијата на овластувачот се повикува еднаш за таа табела со име на колона што е празен стринг.
Ако кодот на дејството е SQLite3::DELETE и callback функцијата враќа
SQLite3::IGNORE (PHP 8)
Само еден овластувач може да биде на сила на врска со базата на податоци во даден момент. Секој повик до тогаш операцијата DELETE продолжува, но оптимизацијата за скратување е оневозможена и сите редови се бришат поединечно. ги надминува претходниот повик. Оневозможете го овластувачот со инсталирање на null callback. Овластувачот е оневозможен по дифолт.
Callback-от на овластувачот не смее да прави ништо што ќе ја измени врската со базата на податоци што го повикала callback-от на овластувачот.
Имајте предвид дека овластувачот се повикува само кога една изјава е подготвена, а не кога се извршува.
Повеќе детали може да се најдат во » SQLite3 документација.
Параметри
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.
Errors/Exceptions
Овој метод не фрла никаква грешка, но ако е овозможен овластувач и врати невалидна вредност, подготовката на изјавата ќе фрли грешка (или исклучок, во зависност од употребата на SQLite3::setAuthorizer() метод).
Примери
Пример #1 тогаш операцијата DELETE продолжува, но оптимизацијата за скратување е оневозможена и сите редови се бришат поединечно. example
Ова дозволува пристап само за читање, и само некои колони од
users табелата ќе бидат вратени. Другите колони ќе бидат заменети со
null.
<?php
$db = new SQLite3('data.sqlite');
$db->exec('CREATE TABLE users (id, name, password);');
$db->exec('INSERT INTO users VALUES (1, \'Pauline\', \'Snails4eva\');');
$allowed_columns = ['id', 'name'];
$db->setAuthorizer(function (int $action, ...$args) use ($allowed_columns) {
if ($action === SQLite3::READ) {
list($table, $column) = $args;
if ($table === 'users' && in_array($column, $allowed_columns)) {
return SQLite3::OK;
}
return SQLite3::IGNORE;
}
return SQLite3::DENY;
});
print_r($db->querySingle('SELECT * FROM users WHERE id = 1;'));Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Array
(
[id] => 1
[name] => Pauline
[password] =>
)
Белешки од корисници
Навигација
Прелистувај сродни теми и функции.
На оваа страница
Автоматски outline од активната документација.
Насловите ќе се појават тука по вчитување.
Попрегледно читање
Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.
PHP.mk документација
PHP.mk интерфејс
Македонска PHP документација со читлив интерфејс, белешки и прегледна навигација.
Отвори документацијаHTTP сервиси
PHP.mk интерфејс
Scrape, IP2Geo, Open Graph и Feed2JSON се достапни во истиот прегледен интерфејс.
Каталог на сервисиРегистрирај домен
PHP.mk интерфејс
Провери слободен поддомен без најава, а регистрацијата продолжи ја по LoginJet најава.
Провери домен