我想集成nodejs和nowjs與codeigniter框架,因爲我沒有時間來重寫整個站點我想檢查用戶是否登錄。我正在使用ion_auth,我存儲會話分貝。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);
};
繼承人的的NodeJS服務器代碼:
編輯:* 簡化了一點,並得到客戶的js *
會話cookieeveryone.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控制器:
<?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);
}
}
這是工作,我可以登錄中的用戶數據從數據庫中的會議控制檯,並適當調用everyone.now.receiveMessage功能。
我有這方面的三個問題:
1)有插入sc_sessions db表有session_id的,但空USER_DATA,USER_AGENT和ip 0.0.0.0行。每次提交表單時一行。
這是什麼原因造成的?我該如何解決?
我知道ajaxcalls和codeigniter會話有問題。看到這個線程:
有沒有辦法看看請求是否與websockets?
2)檢查用戶是否登錄的最佳方法是什麼?例如,如果您檢查查詢返回任何內容或有更好方法的語句?
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論壇上詢問這可能是一個更好的主意。在那裏得到更好的答案的機會要好十倍。 – Steven
好的!我會盡力感謝 – georgesamper
@Steven,不需要將George返回到CI論壇,因此非常適合CI/PHP /等問題! – Jakub