PHP Conference Japan 2024

oci_set_client_identifier

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL OCI8 >= 1.4.0)

oci_set_client_identifier设置客户端标识符

描述

oci_set_client_identifier(资源 $connection, 字符串 $client_id): 布尔值

设置各种数据库组件用来标识以相同数据库用户身份进行身份验证的轻量级应用程序用户的客户端标识符。

当从 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 字节的字符串。

返回值

成功时返回 true,失败时返回 false

示例

示例 #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 函数都会导致往返行程。当启用结果缓存时,查询可能不会发生到数据库的往返行程。

参见

添加注释

用户贡献的注释 1 条注释

sixd at php dot net
13 年前
在 www.oracle.com/technetwork/articles/dsl/php-web-auditing-171451.html 上有一篇名为“使用 Oracle 数据库进行 PHP Web 审计、授权和监控”的文章,该文章全部关于使用 oci_set_client_identifier()。
To Top