在 www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html 上有一篇名为“使用 Oracle 数据库进行 PHP Web 审计、授权和监控”的文章,它都是关于使用 oci_set_client_identifier() 的。
(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)
oci_set_client_identifier — 设置客户端标识符
设置由各种数据库组件使用的客户端标识符,以识别以相同数据库用户身份进行身份验证的轻量级应用程序用户。
客户端标识符在执行下一个从 PHP 到数据库的“往返”时向数据库注册,通常在执行 SQL 语句时。
标识符随后可以通过查询获取,例如使用 SELECT SYS_CONTEXT('USERENV','CLIENT_IDENTIFIER') FROM DUAL
。例如,V$SESSION
等数据库管理视图也将包含该值。它可以与 DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE
一起使用以进行跟踪,也可以用于审计。
该值可能会在使用相同持久连接的页面请求之间保留。
connection
一个 Oracle 连接标识符,由 oci_connect()、oci_pconnect() 或 oci_new_connect() 返回。
client_id
用户选择的字符串,最多 64 字节长。
示例 #1 将客户端标识符设置为应用程序用户
<?php
// 查找应用程序用户的登录名
session_start();
$un = my_validate_session($_SESSION['username']);
$c = oci_connect('myschema', 'welcome', 'localhost/XE');
// 告诉 Oracle 该用户是谁
oci_set_client_identifier($c, $un);
// 下一次往返数据库将附带标识符
$s = oci_parse($c, 'select mydata from mytable');
oci_execute($s);
// ...
?>
某些但并非所有 OCI8 函数都会导致往返。启用结果缓存时,查询可能不会导致往返数据库。
在 www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html 上有一篇名为“使用 Oracle 数据库进行 PHP Web 审计、授权和监控”的文章,它都是关于使用 oci_set_client_identifier() 的。