2010-09-01 3 views
0

Я объявившие структуру, которые выглядят какДоступ Переменные сеанса в/внутр/MySQL расширение

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

и в структуре сессии, я объявил переменную как

struct session 
{ 

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

Сейчас в session_start I инициализировали значения для переменной пары, и я должен получить доступ к этим значениям в расширении/ext/mysql. Предложение о том, как его достичь, будет очень полезно

+0

Хорошо, что вы пытаетесь делать? И что с этим расширением mysql? – Artefacto

+1

@Artefacto: Хорошо, так как hes отправил C-код, который собирается угадать, настраивая расширение mysql ... Подобрать больше объяснений было бы неплохо ... а также тег для реального языка hes, который работает с (я только догадывался на C) – prodigitalson

+0

Я пытаюсь контролировать доступ к базе данных на основе информации о пользователе. Это часть моих исследований по обеспечению доступа к серверной базе данных. Я попытался включить /ext/php_session.h в /ext/mysql.c. Правильно ли это? или есть лучший способ сделать что-то? –

ответ

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), и он работал как прелести. Спасибо за ваши предложения! –

+0

@ Karth Просто потому, что вы можете, это не значит, что вам нужно. Расширение сеанса предоставляет API, * использует его *. Если вы нарушите абстракции, ваш код перестанет работать, когда внутренние структуры, к которым вы обращаетесь, изменяются в какой-либо будущей версии. – Artefacto

+0

@Karth Ну, в частном случае извлечения текущего идентификатора, похоже, не существует никакого API. – Artefacto