Php 在/ext/mysql扩展中访问会话变量
我已经声明了一个类似于Php 在/ext/mysql扩展中访问会话变量,php,php-extension,Php,Php Extension,我已经声明了一个类似于 typedef struct { char* key; char* value; }kvPair; 在会话结构中,我声明了一个变量 struct session { char* id; ..... // other session variables kvPair* pair; } 现在在会话_start中,我初始化了pair变量的值,并且必须在/ext/mysql extension中访问这些值。如果您能
typedef struct
{
char* key;
char* value;
}kvPair;
在会话结构中,我声明了一个变量
struct session
{
char* id;
..... // other session variables
kvPair* pair;
}
现在在会话_start中,我初始化了pair变量的值,并且必须在/ext/mysql extension中访问这些值。如果您能就如何实现这一目标提出建议,我们将不胜感激我不确定您想做什么,但如果您想读取会话中保存的数据,例如通过此脚本:
<?php
session_start();
$_SESSION["key"] = "data";
那么你就有了这些功能:
void php_session_start(TSRMLS_D); /* analogue to session_start() in userspace */
int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC);
好的,你想做什么?mysql扩展与此有什么关系?@Artefactor:既然他发布了C代码,我猜他是在定制mysql扩展。。。再多解释一下就好了。。。除了他使用的实际语言的标签(我只猜是C),我试图根据用户信息控制对数据库的访问。这是我关于保护服务器端数据库访问安全的研究的一部分。我试图在/ext/mysql.c中包含/ext/php_session.h。这样做对吗?还是有更好的方法?天哪,谁建议你这样做的?@zerkms。你是在谈论这个方案还是在/ext/mysql.c中包含session.h文件?一旦我使用了它。我可以直接访问会话结构变量。例如为了访问id变量,我只需要做PS(id),它就像一个符咒。谢谢你的建议@Karth只是因为你可以,并不意味着你应该。会话扩展提供了一个API,请使用它。如果您违反了抽象,当您正在访问的内部结构在将来的某个版本中发生更改时,您的代码将停止工作。@Karth Well,在获取当前id的特定情况下,似乎不存在任何API。
void php_session_start(TSRMLS_D); /* analogue to session_start() in userspace */
int php_get_session_var(char *name, size_t namelen, zval ***state_var TSRMLS_DC);