Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在/ext/mysql扩展中访问会话变量_Php_Php Extension - Fatal编程技术网

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);