2010-09-01 51 views
0

我已经声明,看起来像在/ EXT/mysql扩展

typedef struct 
{ 
    char* key; 
    char* value; 
}kvPair; 

,并在会话中的组织访问会话变量,我在在session_start我声明一个变量作为

struct session 
{ 

    char* id; 
    ..... // other session variables 
    kvPair* pair; 
    } 

现在已经初始化对变量的值,我必须在/ ext/mysql扩展中访问这些值。如何实现它的建议将不胜感激

+0

OK,你有什么去做?这个mysql扩展是用来做什么的? – Artefacto 2010-09-01 01:38:36

+1

@Artefacto:自从hes发布C代码即时猜测hes自定义mysql扩展...... Sill更多的解释将会很好......以及与他一起工作的实际语言标签(我只猜C) – prodigitalson 2010-09-01 01:42:20

+0

我试图根据用户信息控制对数据库的访问。这是我对保护服务器端数据库访问进行研究的一部分。我试图在/ext/mysql.c中包含/ext/php_session.h。这是正确的方法吗?还是有更好的做事方式? – 2010-09-01 01:45:56

回答

0

我不确定你想要做什么,但是如果你想读取保存在会话中的数据,例如通过这个脚本:

<?php 
session_start(); 
$_SESSION["key"] = "data"; 

然后是的,你可以使用会话扩展显示的API:

#include "ext/session/php_session.h" 

然后你有这些功能:

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

一旦我使用它。我能够直接访问会话结构变量。例如。访问id变量,我只是做了PS(id),它像charms一样工作。尽管谢谢你的建议! – 2010-09-01 02:13:03

+0

@Karth只因为你可以,并不代表你应该。会话扩展提供了一个API,*使用它*。如果你违反了抽象概念,当你正在访问的内部结构在未来版本中发生变化时,你的代码将停止工作。 – Artefacto 2010-09-01 02:26:42

+0

@Karth那么,在获取当前id的特殊情况下,似乎并不存在任何API。 – Artefacto 2010-09-01 02:27:58