使用nodejs向apache发送GET请求时出错

时间:2013-11-27 17:23:31

标签: php node.js apache codeigniter

我正在使用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>

1 个答案:

答案 0 :(得分:1)

节点JS和PHP不共享会话数据。因此,通过使用nodejs请求页面,您的服务器不知道用户是谁。