我正在使用nodejs在某种情况下向apache服务器发出请求,然后执行与此请求相关的php函数
在nodejs(server.js)中获取请求
var options = {
host: 'localhost',
port: 80,
path: '/myapp/users/logout',
method: 'GET',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
};
var req = http.get(options, function(res){
res.setEncoding('utf8');
console.log('STATUS: ' + res.statusCode);
res.on('data', function(message){
console.log('Message: ' + message);
});
}).on('error', function(e) {
console.log('ERROR: ' + e.message);});
controller / users.php中的php函数(代码点火器)
function logout() {
$this->load->model('user');
$fb_id = $this->session->userdata('fb_id');
$player = $this->user->login($fb_id);
$updated_data = array(
'isonline' => 0,
'status' => 'idle',
'selected' => 0,
'askedfor_ques' => 0,
'finish_ques' => 0,
'is_winner' => 0,
);
$this->load->model('cat_sel');
$room_id = $this->session->userdata('room_id');
$players_mun = $this->cat_sel->get_numof_players($room_id);
$updatedroom_data = array(
'num_of_players' => $players_mun - 1,
);
$this->cat_sel->update_room($room_id, $updatedroom_data);
$this->user->updateuser($player['player_id'], $updated_data);
$this->session->sess_destroy();
redirect(base_url() . 'users/login');
}
但是当我运行这个时,我发现会话中没有值,并且会出现如下所示的错误 尽管如果我在没有nodejs的情况下运行它仍然可以正常工作
Apache日志
127.0.0.1 - - [27/Nov/2013:18:55:18 +0200] "GET /myapp/users/logout HTTP/1.1" 302 1261 "-" "-"
nodejs log
STATUS: 302
Message: <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined offset: 0</p>
<p>Filename: models/cat_sel.php</p>
<p>Line Number: 44</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Notice</p>
<p>Message: Undefined index: player_id</p>
<p>Filename: controllers/users.php</p>
<p>Line Number: 44</p>
</div>
答案 0 :(得分:1)
节点JS和PHP不共享会话数据。因此,通过使用nodejs请求页面,您的服务器不知道用户是谁。