2010-09-01 53 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