나는 codeigniter 프레임 워크와 nodejs 및 nowjs를 통합하려고합니다. 사용자가 로그인했는지 확인하려는 전체 사이트를 다시 작성할 시간이 없으므로 ion_auth를 사용하고 있습니다. 세션 db.codeigniter nodejs 및 nowjs 통합
클라이언트 JS :
var session_id = $.cookie('sc_session');
$("form").submit(function() {
now.distributeMessage($("textarea").val(),session_id);
});
now.receiveMessage = function(message){
$("body").append("<br>" + message);
};
을 heres nodejs 서버 코드 :
편집 : * 조금 단순화 및 클라이언트 JS *
에서 세션 쿠키를 얻을 수everyone.now.distributeMessage = function(message,session_cookie) {
exec('php index.php user_session decrypt ' + encodeURIComponent(session_cookie),
function (error, stdout, stderr) {
var parts = stdout.split(';');
var session_id = parts[1].split(':')[2];
var query = 'select * from sc_sessions where session_id=' + session_id;
client.query(query, function (err, results, fields) {
if (results) {
everyone.now.receiveMessage(str);
}
});
});
};
그리고 여기가 nodejs에 의해 호출 컨트롤러 : 그것은 작동하고 난 데이터베이스의 세션에서 콘솔에 _ 데이터를 기록 할 수 있고, 제대로 everyone.now.receiveMessage 함수를 호출
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class User_session extends CI_Controller
{
public function __construct()
{
parent::__construct();
if (!$this->input->is_cli_request()) {
redirect('index');
}
}
public function decrypt($session_id)
{
$this->load->library('encrypt');
$session_id = urldecode($session_id);
echo $this->encrypt->decode($session_id);
}
}
.
나는이에 대한 세 가지 질문이 있습니다
1) SESSION_ID로하지만 빈 _ 데이터, USER_AGENT 및 IP 0.0.0.0로 sc_sessions의 DB 테이블에 삽입 된 행이 있습니다. 양식이 제출 될 때마다 한 행씩.
이 문제의 원인은 무엇이며 어떻게 수정합니까?
ajaxcalls 및 codeigniter 세션에 문제가 있음을 알고 있습니다. 이 스레드를보십시오 :
요청이 웹 소켓으로 만들어 졌는지 확인할 방법이 있습니까?
2) 사용자가 로그인했는지 확인하는 가장 좋은 방법은 무엇입니까? 예를 들어 where 문에서 쿼리가 무엇을 반환했는지 확인하거나 더 나은 방법이 있는지 확인하십시오.
3) 더 나은 방법이 있습니까?
나는 이것에 붙어있어 어떤 도움을 주셔서 감사합니다.
조지
편집 : 명령 행에서 스크립트를 호출은 새로운 세션을 생성하는 원인이되었다. 세션 클래스를 확장하여이를 방지하십시오.
응용 프로그램/라이브러리/MY_Session.php
<?php
class MY_Session extends CI_Session {
public function __construct()
{
$CI = get_instance();
if ($CI->input->is_cli_request())
{
return;
}
parent::__construct();
}
}
CI 포럼에 대해 질문하는 것이 좋습니다. 저기서 더 좋은 대답을 얻을 수있는 기회는 10 배 더 낫습니다. – Steven
감사합니다 – georgesamper
@Steven, CI 포럼에 George BACK을 지시 할 필요가 없으므로 CI/PHP/etc 질문에 매우 좋습니다! – Jakub