Jump to content

Login / Logout Errors


UAL003

Recommended Posts

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...