UAL003 Posted July 16, 2011 Report Share Posted July 16, 2011 Hello, After recently editing the local.config.php file changing the time to display a flight on our live map after completing, a few errors have started pooping up on our site. First when logging in I get the following error: Warning: Cannot modify header information - headers already sent by (output started at /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/local.config.php:1) in /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/modules/Login/Login.php on line 154 The when logging out I receive these two errors: Warning: Cannot modify header information - headers already sent by (output started at /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/local.config.php:1) in /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/common/Auth.class.php on line 341 Warning: Cannot modify header information - headers already sent by (output started at /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/local.config.php:1) in /hermes/web04/b1846/pow.virtualunitedairline/htdocs/core/modules/Logout/Logout.php on line 26 I understand that the error is in either local.config.php, login.php or logout.php but don't know what I should be looking for in these files. Any help that someone can give would be greatly appreciated. Quote Link to comment Share on other sites More sharing options...
Jeff Posted July 17, 2011 Report Share Posted July 17, 2011 Let's take a peek at your files shall we? The "errors" are giving you hints at what you should be looking for. The first one states that the error is happening on line 154 in your Login.php file. The second...Line 341 of the Auth.class.php, and the third... Line 26 of the Logout.php. What are on those lines, and maybe we can get this resolved for you? And maybe post what exactly you have changed in your local.cfg file. Quote Link to comment Share on other sites More sharing options...
UAL003 Posted July 17, 2011 Author Report Share Posted July 17, 2011 I think I found what is causing my troubles. The error started when I changed when I changed my local.config from this: # ACARS options# Minutes, flights to show on the ACARS # Default is 720 minutes (12 hours) Config::Set('ACARS_LIVE_TIME', 720); Config::Set('ACARS_DEBUG', false); to this: # ACARS options# Minutes, flights to show on the ACARS # Default is 720 minutes (12 hours) Config::Set('ACARS_LIVE_TIME', 30); Config::Set('ACARS_DEBUG', false); When I restore my default config file everything starts working fine. Am I editing this file in-properly? Also as requested I've posted the other files: Login.php <?php/** * phpVMS - Virtual Airline Administration Software * Copyright © 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum'>http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs'>http://www.phpvms.net/docs * * phpVMS is licenced under the following license: * Creative Commons Attribution Non-commercial Share Alike (by-nc-sa) * View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * * @author Nabeel Shahzad * @copyright Copyright © 2008, Nabeel Shahzad * @link http://www.phpvms.net */ class Login extends CodonModule { public function __construct() { parent::__construct(); } public function index() { $this->login(); } public function login($redir='') { if(Auth::LoggedIn() == true) { $this->render('login_already.tpl'); return; } $this->set('redir', $redir); if(isset($this->post->action) && $this->post->action == 'login') { $this->ProcessLogin(); } else { $this->render('login_form.tpl'); } } public function logout() { Auth::LogOut(); $this->set('redir', SITE_URL); $this->render('login_complete.tpl'); } public function forgotpassword() { if($this->post->action == 'resetpass') { $this->ResetPassword(); return; } $this->render('login_forgotpassword.tpl'); } public function ResetPassword() { $email = $this->post->email; if(!$email) { return false; } else { $pilotdata = PilotData::GetPilotByEmail($email); if(!$pilotdata) { $this->render('login_notfound.tpl'); return; } $newpw = substr(md5(date('mdYhs')), 0, 6); RegistrationData::ChangePassword($pilotdata->pilotid, $newpw); $this->set('firstname', $pilotdata->firstname); $this->set('lastname', $pilotdata->lastname); $this->set('newpw', $newpw); $message = Template::GetTemplate('email_lostpassword.tpl', true); Util::SendEmail($pilotdata->email, 'Password Reset', $message); $this->render('login_passwordreset.tpl'); } } public function ProcessLogin() { $email = $this->post->email; $password = $this->post->password; if($email == '' || $password == '') { $this->set('message', 'You must fill out both your username and password'); $this->render('login_form.tpl'); return false; } if(!Auth::ProcessLogin($email, $password)) { $this->set('message', Auth::$error_message); $this->render('login_form.tpl'); return false; } else { if(Auth::$userinfo->confirmed == PILOT_PENDING) { $this->render('login_unconfirmed.tpl'); Auth::LogOut(); // show error } elseif(Auth::$userinfo->confirmed == PILOT_REJECTED) { $this->render('login_rejected.tpl'); Auth::LogOut(); } else { $pilotid = Auth::$userinfo->pilotid; $session_id = Auth::$session_id; # If they choose to be "remembered", then assign a cookie if($this->post->remember == 'on') { $cookie = "{$session_id}|{$pilotid}|{$_SERVER['REMOTE_ADDR']}"; $res = setrawcookie(VMS_AUTH_COOKIE, $cookie, time() + Config::Get('SESSION_LOGIN_TIME'), '/'); } PilotData::UpdateLogin($pilotid); #$this->set('redir', SITE_URL . '/' . $this->post->redir); #$this->render('login_complete.tpl'); CodonEvent::Dispatch('login_success', 'Login'); $this->post->redir = str_replace('index.php/', '', $this->post->redir); header('Location: '.url('/'.$this->post->redir)); } return; } } } Logout.php <?php/** * phpVMS - Virtual Airline Administration Software * Copyright © 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum'>http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs'>http://www.phpvms.net/docs * * phpVMS is licenced under the following license: * Creative Commons Attribution Non-commercial Share Alike (by-nc-sa) * View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * * @author Nabeel Shahzad * @copyright Copyright © 2008, Nabeel Shahzad * @link http://www.phpvms.net */ class Logout extends CodonModule { public function index() { Auth::LogOut(); /*redirect back to front page */ header('Location: '.url('/')); #$this->set('redir', SITE_URL); #$this->render('login_complete.tpl'); } } Auth.class.php <?php/** * phpVMS - Virtual Airline Administration Software * Copyright © 2008 Nabeel Shahzad * For more information, visit www.phpvms.net * Forums: http://www.phpvms.net/forum'>http://www.phpvms.net/forum * Documentation: http://www.phpvms.net/docs'>http://www.phpvms.net/docs * * phpVMS is licenced under the following license: * Creative Commons Attribution Non-commercial Share Alike (by-nc-sa) * View license.txt in the root, or visit http://creativecommons.org/licenses/by-nc-sa/3.0/ * * @author Nabeel Shahzad * @copyright Copyright © 2008, Nabeel Shahzad * @link http://www.phpvms.net * @license http://creativecommons.org/licenses/by-nc-sa/3.0/ */ class Auth extends CodonData { public static $init=false; public static $loggedin=false; public static $error_message; public static $pilotid; public static $userinfo; public static $session_id; public static $usergroups; /** * Start the "auth engine", see if anyone is logged in and grab their info * * @return mixed This is the return value description * */ public static function StartAuth() { self::$init = true; self::$session_id = SessionManager::Get('session_id'); $assign_id = false; if(self::$session_id == '') { if($_COOKIE[VMS_AUTH_COOKIE] != '') { $data = explode('|', $_COOKIE[VMS_AUTH_COOKIE]); $session_id = $data[0]; $pilot_id = $data[1]; $ip_address = $data[2]; // TODO: Determine data reliability from IP addresses marked $session_info = self::get_session($session_id, $pilot_id, $ip_address); if($session_info) { /* Populate session info */ $userinfo = PilotData::GetPilotData($pilot_id); if(!$userinfo) { self::$loggedin = false; return false; } self::$loggedin = true; self::$userinfo = $userinfo; self::$pilotid = self::$userinfo->pilotid; self::$usergroups = SessionManager::Get('usergroups'); self::$session_id = $session_id; if(self::$usergroups == '') { self::$usergroups = PilotGroups::GetUserGroups($userinfo->pilotid); } SessionManager::Set('loggedin', true); SessionManager::Set('userinfo', $userinfo); SessionManager::Set('usergroups', self::$usergroups); PilotData::UpdateLogin($userinfo->pilotid); self::update_session(self::$session_id, self::$userinfo->pilotid); return true; } } // Look for an existing session based on ID // No session ID was found anywhere so assign one $assign_id = true; self::$session_id = self::start_session(0); SessionManager::Set('session_id', self::$session_id); } else { // There's a session ID, so double check that they're logged in if(SessionManager::Get('loggedin') == true) { self::$loggedin = true; self::$userinfo = SessionManager::Get('userinfo'); self::$usergroups = PilotGroups::GetUserGroups(self::$userinfo->pilotid); self::$pilotid = self::$userinfo->pilotid; # Bugfix, in case user updates their profile info, grab the latest self::$userinfo = PilotData::GetPilotData(self::$pilotid); self::update_session(self::$session_id, self::$userinfo->pilotid); return true; } else { // Already been assigned a session ID, and not signed in... self::$loggedin = false; self::update_session(self::$session_id, 0); $assign_id = false; } } // Empty session so start one up, and they're not logged in if($assign_id == true) { } return true; } public static function start_session($pilot_id) { $sql = "INSERT INTO ".TABLE_PREFIX."sessions (`pilotid`, `ipaddress`, `logintime`) VALUES ({$pilot_id},'{$_SERVER['REMOTE_ADDR']}', NOW())"; DB::query($sql); $session_id = DB::$insert_id; return $session_id; } public static function update_session($session_id, $pilot_id) { $sql = 'UPDATE '.TABLE_PREFIX."sessions SET `pilotid`={$pilot_id}, `logintime`=NOW(), `ipaddress`='{$_SERVER['REMOTE_ADDR']}' WHERE `id`={$session_id}"; DB::query($sql); $session_id = $session_data->id; } public static function get_session($session_id, $pilot_id, $ip_address) { $sql = 'SELECT * FROM '.TABLE_PREFIX."sessions WHERE id = '{$session_id}' AND pilotid = '{$pilot_id}' "; //AND ipaddress = '{$ip_address}' $results = DB::get_row($sql); return $results; } public static function remove_sessions($pilot_id) { $sql = "DELETE FROM ".TABLE_PREFIX."sessions WHERE pilotid={$pilot_id}"; DB::query($sql); } /** * Clear any guest sessions which have expired * * @return mixed This is the return value description * */ public static function clearExpiredSessions() { $time = Config::Get('SESSION_GUEST_EXPIRE'); $sql = "DELETE FROM ".TABLE_PREFIX."sessions WHERE DATE_SUB(NOW(), INTERVAL {$time} MINUTE) > `logintime` AND `pilotid` = 0"; DB::query($sql); } /** * Return the pilot ID of the currently logged in user * * @return int The pilot's ID * */ public static function PilotID() { return self::$userinfo->pilotid; } /** * Get their firstname/last name */ public static function DisplayName() { return self::$userinfo->firstname . ' ' . self::$userinfo->lastname; } /** * Return true/false if they're logged in or not */ public static function LoggedIn() { if(self::$init == false) { return self::StartAuth(); } return self::$loggedin; } /** * See if a use is in a given group */ public static function UserInGroup($groupname) { if(!self::LoggedIn()) return false; if(!self::$usergroups) self::$usergroups = array(); foreach(self::$usergroups as $group) { if($group->name == $groupname) return true; } return false; } /** * Log the user in */ public static function ProcessLogin($useridoremail, $password) { # Allow them to login in any manner: # Email: blah@blah.com # Pilot ID: VMA0001, VMA 001, etc # Just ID: 001 if(is_numeric($useridoremail)) { $useridoremail = $useridoremail - intval(Config::Get('PILOTID_OFFSET')); $sql = 'SELECT * FROM '.TABLE_PREFIX.'pilots WHERE pilotid='.$useridoremail; } else { # They're logging in with an email if(preg_match('/^.*\@.*$/i', $useridoremail) > 0) { $emailaddress = DB::escape($useridoremail); $sql = 'SELECT * FROM ' . TABLE_PREFIX . 'pilots WHERE email=\''.$useridoremail.'\''; } # They're loggin in with a pilot id elseif(preg_match('/^([A-Za-z]*)(.*)(\d*)/', $useridoremail, $matches)>0) { $id = trim($matches[2]); $id = $id - intval(Config::Get('PILOTID_OFFSET')); $sql = 'SELECT * FROM '.TABLE_PREFIX.'pilots WHERE pilotid='.$id; } # No idea else { self::$error_message = 'Invalid user ID'; return false; } } $password = DB::escape($password); $userinfo = DB::get_row($sql); if(!$userinfo) { self::$error_message = 'This user does not exist'; return false; } /*if($userinfo->retired == 1) { self::$error_message = 'Your account was deactivated, please contact an admin'; return false; }*/ //ok now check it $hash = md5($password . $userinfo->salt); if($hash == $userinfo->password) { self::$userinfo = $userinfo; self::update_session(self::$session_id, self::$userinfo->pilotid); SessionManager::Set('loggedin', 'true'); SessionManager::Set('userinfo', $userinfo); SessionManager::Set('usergroups', PilotGroups::GetUserGroups($userinfo->pilotid)); PilotData::updateProfile($pilotid, array( 'lastlogin'=>'NOW()', 'lastip' => $_SERVER['REMOTE_ADDR'], ) ); return true; } else { self::$error_message = 'Invalid login, please check your username and password'; self::LogOut(); return false; } } /** * Log them out */ public static function LogOut() { #self::remove_sessions(SessionManager::GetValue('userinfo', 'pilotid')); # Mark them as guest self::update_session(self::$session_id, 0); # "Ghost" entry //self::start_session(self::$userinfo->pilotid); // Orphaned? SessionManager::Set('loggedin', false); SessionManager::Set('userinfo', ''); SessionManager::Set('usergroups', ''); # Delete cookie $_COOKIE[VMS_AUTH_COOKIE] = ''; setcookie(VMS_AUTH_COOKIE, false); self::$loggedin = false; } } Like I said I think this error is in local.config since restoring that fixed the issue. Note: Restoring the local.config also fixes my issue with pilots in the ADMIN Centrer Quote Link to comment Share on other sites More sharing options...
Jeff Posted July 17, 2011 Report Share Posted July 17, 2011 Setting your Acars Live Time to 30 minutes shouldn't be too bad. Are you changing it in just the local.config.php? You'll probably have to change it in the app.config.php as well. Quote Link to comment Share on other sites More sharing options...
Moderators joeri Posted July 17, 2011 Moderators Report Share Posted July 17, 2011 no never change annything in the app.config as it will get overwritten on an update. how are you edeting your local.config.php? Quote Link to comment Share on other sites More sharing options...
UAL003 Posted July 17, 2011 Author Report Share Posted July 17, 2011 no never change annything in the app.config as it will get overwritten on an update. how are you edeting your local.config.php? I am editing my locoal.config.php using notepad. Then uploading it to the server using filezilla. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.