PHP.mk документација

SQLite3::setAuthorizer

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

sqlite3.setauthorizer.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека sqlite3.setauthorizer.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SQLite3::setAuthorizer

Референца за `sqlite3.setauthorizer.php` со подобрена типографија и навигација.

sqlite3.setauthorizer.php

SQLite3::setAuthorizer

(PHP 8)

SQLite3::setAuthorizerКонфигурира повикување за да се користи како овластувач за ограничување на она што може да го направи една изјава

= NULL

public function SQLite3::setAuthorizer(?callable $callback): bool

Поставува повикување што ќе го повика 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::SELECTnullnull
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::FUNCTIONnull(PHP 8)
SQLite3::SAVEPOINTОперацијаИме на функција
SQLite3::RECURSIVEnullnull

Име на точка на спасување"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 документација.

Параметри

callback

На callable што треба да се повика.

Враќа null се поминува наместо тоа, ова ќе го оневозможи тековниот callback на овластувачот.

Вратени вредности

Патеката до 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 се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.