[英]Why aren't my class variables being set?
我正在使用CodeIgniter開發我的登錄系統。 通過獲取當前用戶信息的控制器類的核心擴展,我在整個應用程序控制器中使用$ this-> user來顯示用戶信息。 在我的本地WAMP服務器上,這可以正常工作。 但是,在我的Web服務器上,登錄后始終顯示來賓的信息。 注意var_dump靠近成員get info方法的底部。 這始終顯示正確的帳戶信息。 但是,一旦我從控制器擴展中調用它,它就會顯示來賓信息。
Controller擴展類:
class MY_Controller extends CI_Controller {
var $user = array();
function __construct(){
parent::__construct();
$this->benchmark->mark('foo');
//$this->output->cache(5);
if(!$this->config->item('global_maintenance')){
$this->member->get_info($this->session->userdata('member_id'));
if($this->member->error == NULL){
$this->user = $this->member->info;
} else {
die($this->member->error);
}
} else {
die('BaseCMD is currently down for routine maintenance. Please try again later!');
}
}
}
成員模型:
<?php
class Member extends CI_Model {
var $info = array();
var $activation_code = '';
var $error = NULL;
function __construct(){
parent::__construct();
$this->error = NULL;
}
function default_info(){
$info = array(
'id' => 0,
'display_name' => 'Guest',
'email_address' => '',
'password' => '',
'status' => 0,
'activation_code' => '',
'location' => '',
'date_joined' => '',
'gender' => '',
'results_per_page' => 10,
'admin_emails' => FALSE,
'member_emails' => FALSE,
'team' => array('id' => 0),
'perms' => array(),
'group' => array('id' => 0),
'stats' => array(),
'signature' => '',
'last_active' => 0,
'last_forum_visit' => 0,
'member_profile' => 'Guest',
'date_of_birth' => '',
'gender' => '',
'profile_banner' => '',
'avatar' => array('url' => '')
);
return $info;
}
public function get_info($criteria = 0){
if(is_numeric($criteria)){
$where = "WHERE m.member_id = ".$criteria;
} else {
$where = "WHERE email_address = '".$criteria."'";
}
$query_member = "
SELECT
m.member_id AS member_id, m.display_name, m.email_address, m.group_id, m.status, m.activation_code, UNIX_TIMESTAMP(m.date_joined) AS date_joined,
m.gender, m.location, m.biography, m.mantra, m.birth_date, m.results_per_page, m.admin_emails, m.member_emails, m.last_active, m.avatar_id,
m.banner_id, m.signature, m.newsletter_subscription, m.recruiting_status, m.facebook_username, m.website, m.steam_username, m.xboxlive_gamertag, m.psn_id,
g.group_id, g.title, g.description,
a.attachment_id, a.file_name,
f.message_id, f.author_id, COUNT(f.message_id) AS forum_count,
b.attachment_id AS banner_id, b.file_name AS banner_file,
mr.request_id, mr.author_id, mr.recipient_id, mr.status, COUNT(mr.request_id) AS total_friends,
tm.team_member_id, tm.member_id, tm.team_id
FROM members AS m
LEFT JOIN member_groups AS g ON (m.group_id = g.group_id)
LEFT JOIN attachments AS a ON (m.avatar_id = a.attachment_id)
LEFT JOIN forum_messages AS f ON (m.member_id = f.author_id)
LEFT JOIN attachments AS b ON (m.banner_id = b.attachment_id)
LEFT JOIN member_requests AS mr ON (m.member_id = mr.author_id OR m.member_id = mr.recipient_id) AND mr.status = 1
LEFT JOIN team_members AS tm ON (m.member_id = tm.member_id) AND date_left = ''
".$where."
GROUP BY m.member_id
LIMIT 1";
//show_error($query_member);
if($query_member = $this->db->query($query_member)){
if($query_member->num_rows() > 0){
$member = $query_member->row_array();
$member_id = $member['member_id'];
var_dump($this->session->all_userdata());
$info = array(
'id' => $member['member_id'],
'display_name' => $member['display_name'],
'email_address' => $member['email_address'],
'status' => ($member['status'] == 0) ? FALSE : TRUE,
'activation_code' => $member['activation_code'],
'location' => $member['location'],
'date_joined' => date('M jS, Y', $member['date_joined']),
'gender' => ($member['gender'] == 0) ? 'Male' : 'Female',
'results_per_page' => $member['results_per_page'],
'admin_emails' => ($member['admin_emails'] == 0) ? FALSE : TRUE,
'member_emails' => ($member['member_emails'] == 0) ? FALSE : TRUE,
'group' => array(
'id' => $member['group_id'],
'title' => $member['title'],
'description' => $member['description']
),
'signature' => $member['signature'],
'last_active' => strtotime($member['last_active']),
'member_profile' => anchor('members/'.url_title($member['display_name']).'/'.$member['member_id'], $member['display_name']),
'newsletter' => ($member['newsletter_subscription'] == 1) ? TRUE : FALSE,
'date_of_birth' => date('M jS, Y', strtotime($member['birth_date'])),
'birth_date' => date('Y-m-d', strtotime($member['birth_date'])),
'age' => floor((time() - strtotime($member['birth_date'])) / (60 * 60 * 24 * 365)),
'gender' => $member['gender'],
'biography' => $member['biography'],
'mantra' => $member['mantra'],
'contact' => array(
'email' => ($member['member_emails'] == '1') ? $member['email_address'] : NULL,
'website' => ($member['website'] != '') ? $member['website'] : NULL,
'facebook' => ($member['facebook_username'] != '') ? 'http://www.facebook.com/'.$member['facebook_username'] : NULL,
'steam' => ($member['steam_username'] != '') ? 'http://www.steamcommunity.com/id/'.$member['steam_username'] : NULL,
),
'gaming' => array(
'xboxlive' => $member['xboxlive_gamertag'],
'psn' => $member['psn_id'],
'steam' => $member['steam_username']
),
'statistics' => array('post_count' => $member['forum_count']),
'avatar' => array(
'attachment_id' => $member['attachment_id'],
'url' => base_url('attachments/'.$member['file_name'])
),
'banner' => array(
'id' => $member['banner_id'],
'url' => base_url('attachments/'.$member['banner_file'])
),
'friend_status' => FALSE,
'recruiting_status' => ($member['team_id'] == '' && $member['recruiting_status'] == '1') ? TRUE : FALSE
);
//$info['friend_results'] = $this->friend_results($member_id);
var_dump($info);
$this->info = $info;
} else {
$this->info = $this->default_info();
}
} else {
$this->error = $this->db->_error_message();
}
//show_error(var_dump($this->info));
}
好的,因此在從控制器擴展,成員模型和模板中轉儲了變量之后,我意識到我的問題與會話或類無關。 實際上,我的條件語句確定了我在模板中使用的用戶是否已登錄。
<?php
if($this->user['id'] === 0){// This is correct.
echo "You're logged out.";
}
if($this->user['id'] == 0) // This is what I was using and is not correct, apparently.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.