Codeigniter 3 – Sessão de access da instalação externa do Codeigniter

Não consigo obter dados de session passados ​​do meu aplicativo de codeigniter de volta para um script na minha pasta incluída. Pelo que leio sobre outras respostas, preciso configurar meu session_id() para poder juntar-se a uma session com session_start() .

 ROOT / .. /application .. /system .. /includes .. /Events.php <- I need access from here 

Teoricamente, o código abaixo deve funcionar, pelo menos de acordo com outras respostas, porque a nova biblioteca de session CI passa para sessões nativas.

 session_id($_COOKIE['ci_session']); session_start(); var_dump($_SESSION); // returns null 

Eu sou uma session de incompreensão?

A resposta original de @ wolfgang1983 Ben Swinburne combinou com uma resposta aqui: de Atiqur Rahman Sumon

Você pode include o index.php partir de qualquer diretório, no entanto, você precisa alterar as $system_path e $application_folder para coincidir com sua localização relativa. Bem, isso é ótimo se você quiser mudar completamente os caminhos do seu aplicativo inteiro, mas eu não queria, então eu apenas copiei o arquivo index.php no diretório com o qual eu precisava include código.

 ROOT / .. /application .. /system .. /includes .. /Events.php <- I need access from here .. /index.php <- Copied CI index with new paths .. /index.php 

Em /includes/index.php :

 //$system_path = 'system'; $system_path = '../system'; //$application_folder = 'application'; $application_folder = '../application'; 

Agora você pode include o codicador no seu arquivo com:

 load->library('session'); //if it's not autoloaded in your CI setup echo $CI->session->userdata('name'); ?> 

Se você atualizar sua página agora, você acabaria com o controlador padrão carregado.

Então, tirando da resposta de Atiqur Rahman Sumon, podemos definir uma constante antes da carga para dizer ao controlador padrão que queremos ignorar a chamada de chamada normal.

 ob_start(); define("REQUEST", "external"); <-- include('index.php'); ob_end_clean(); 

E no seu default_controller.php :

 function index() { if (REQUEST == "external") { return; } //other code for normal requests. } 

Encontrei esses valores de session de código de access de arquivos externos que podem ajudar o que você aprendeu.

 load->library('session'); //if it's not autoloaded in your CI setup echo $CI->session->userdata('name'); ?> 

Melhorando a resposta do @acupajoe, você não precisa copiar-colar o CI index.php . Em vez disso, altere a parte de include para isso:

  

Em seguida, altere em index.php :

 $system_path = isset($temp_system_path) ? $temp_system_path : 'system'; 

e

 $application_folder = isset($temp_application_folder) ? $temp_application_folder : 'application';