在 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()。