blueman378 Posted November 29, 2008 Share Posted November 29, 2008 Hi guys. im working on rewriting a script. anyway heres the page im having problems with: <?php //--------------------- //SESSION.PHP //--------------------- //this file is designed to control user interaction with the site. //it is advised that you do not modify this file as you will stop the site working. //--------------------- //--------------------- //AUTHOR DETAILS //--------------------- //AUTHOR: NZ Evox //AUTHOR EMAIL: [email protected] //SUPPORT: http://www.baf.com //FORUM THEMES: http://www.baf.com/themes/ //FORUM MODS: http://www.baf.com/mods/ //--------------------- //--------------------- //SCRIPT DETAILS //--------------------- //MAJOR: 001 //MINOR: .0.0.0 //COMPLETE: 1.0.0.0 //LAST UPDATE: November 2008 //--------------------- //--------------------- //INCLUDES //--------------------- //these are the other scripts needed to run the site //--------------------- include("database.php"); include("form.php"); //--------------------- class session { var $username; //Username given on sign-up var $userid; //Userid stored in the database var $usercookiekey; // the value stored in the users cookie var $userlevel; //The level to which the user pertains var $time; //Time user was last active (page loaded) var $logged_in; //True if user is logged in, false otherwise var $userhidden; //True if user is logged in, false otherwise var $userinfo = array(); //The array holding all user info var $url; //The page url current being viewed var $referrer; //Last recorded site page viewed function session() { $this->sessionstart(); } function sessionstart() { session_start(); global $database; $this->logged_in = $this->checkLogin(); if(!$this->logged_in) { $database->addActiveGuest($_SERVER['REMOTE_ADDR']); } else { if($this->userhidden == 1) { $database->addHiddenUser($this->userid); } else { $database->addActiveUser($this->userid); } } } function checkLogin() { global $database; if(isset($_COOKIE['cookuserid']) && isset($_COOKIE['cookkey'])) { $this->userinfo = $database->getUserInfo($_COOKIE['cookuserid']); $this->username = $this->userinfo['username']; $this->userid = $_SESSION['userid'] = $_COOKIE['cookuserid']; $this->usercookiekey = $_SESSION['usercookiekey'] = $_COOKIE['cookkey']; $this->userlevel = $_SESSION['userlevel'] = $this->userinfo[user_level]; $this->userhidden = $_SESSION['userhidden'] = $this->userinfo[user_hidden]; } if(isset($_SESSION['userid']) && isset($_SESSION['usercookiekey']) && isset($_SESSION['userlevel']) && $_SESSION['userlevel'] != 0) { if($database->confirmUserID($_SESSION['userid'], $_SESSION['usercookiekey']) != 0) { unset($_SESSION['username']); unset($_SESSION['userid']); unset($_SESSION['userlevel']); return false; } $this->userinfo = $database->getUserInfo($_SESSION['userid']); $this->username = $this->userinfo['username']; $this->userid = $this->userinfo['user_id']; $this->userlevel = $this->userinfo['user_level']; $this->usercookiekey = $this->userinfo['user_cookiekey']; return true; } else { return false; } } function generateRandID() { return md5($this->generateRandStr(16)); } function generateRandStr($length) { $randstr = ""; for($i=0; $i<$length; $i++) { $randnum = mt_rand(0,61); if($randnum < 10) { $randstr .= chr($randnum+48); } else if($randnum < 36) { $randstr .= chr($randnum+55); } else { $randstr .= chr($randnum+61); } } return $randstr; } function login($subuser, $subpass, $subremember, $subhidden) { global $database, $form; //--------------------- //USERNAME ERROR CHECKING //--------------------- $field = "username"; //--------------------- //CHECK IF USERNAME IS EMPTY //--------------------- if(!$subuser || strlen($subuser = trim($subuser)) == 0) { $form->setError($field, "* Username not entered<br>"); } //--------------------- //CHECK IF USERNAME IS ALPHANUMERIC AND UNDERSCORE //--------------------- else { if(!eregi("^([0-9a-z_])*$", $subuser)) { $form->setError($field, "* Username not alphanumeric"); } } //--------------------- //PASSWORD ERROR CHECKING //--------------------- $field = "password"; //--------------------- //CHECK IF PASSWORD IS EMPTY //--------------------- if(!$subpass || strlen($subpass = trim($subpass)) == 0) { $form->setError($field, "* Password not entered<br>"); } //--------------------- //ERRORS EXIST GET USER TO CORRECT THEM //--------------------- if($form->num_errors > 0) { return 1; } //--------------------- //CHECK IF USERNAME IN DATABASE AND IF PASSWORD CORRECT //--------------------- $subuser = stripslashes($subuser); $result = $database->confirmUserPass($subuser, md5($subpass)); //--------------------- //CHECK ERROR CODES //--------------------- if($result == 1) { $field = "username"; $form->setError($field, "* Username not found<br>"); } else if($result == 2) { $field = "password"; $form->setError($field, "* Incorrect password<br>"); } //--------------------- //ERRORS EXIST GET USER TO CORRECT THEM //--------------------- if($form->num_errors > 0) { return 1; } //--------------------- //NO ERRORS LOGIN USER //--------------------- $this->userinfo = $database->getUserInfoUsername($subuser); $this->username = $_SESSION['username'] = $this->userinfo['username']; $this->userid = $_SESSION['userid'] = $this->userinfo['user_id']; $this->userlevel = $_SESSION['userlevel'] = $this->userinfo['user_level']; $this->usercookiekey = $_SESSION['usercookiekey'] = $this->generateRandID(); $database->updateUserField($this->userid, "user_cookiekey", $this->usercookiekey); if($subhidden == "on") { $database->updateUserField($this->userid, "user_hidden", 1); $this->userhidden = $_SESSION['userhidden'] = 1; $database->addHiddenUser($this->userid); } else { $database->addActiveUser($this->userid); } if($subremember) { setcookie("cookuserid", $this->userid, time()+COOKIE_EXPIRE, COOKIE_PATH); setcookie("cookkey", $this->usercookiekey, time()+COOKIE_EXPIRE, COOKIE_PATH); } return true; //user logged in } function logout() { global $database; if(isset($_COOKIE['cookuserid']) && isset($_COOKIE['cookkey'])) { setcookie("cookuserid", "", time()-3600, COOKIE_PATH); setcookie("cookkey", "", time()-3600, COOKIE_PATH); } /* Unset PHP session variables */ unset($_SESSION['usercookiekey']); unset($_SESSION['userid']); /* Reflect fact that user has logged out */ $this->logged_in = false; /** * Remove from active users table and add to * active guests tables. */ $database->removeActiveUser($this->userid); $database->addActiveGuest($_SERVER['REMOTE_ADDR'], Time()); /* Set user level to guest */ $this->username = ""; $this->userlevel = ""; } } //--------------------- //INITIALIZE THE CLASSES //--------------------- $session = new session; $form = new form; //--------------------- ?> specifically the problem is that the variable (and session) userhidden/user_hidden are not getting set they are meant to be set here: <?php //--------------------- //NO ERRORS LOGIN USER //--------------------- $this->userinfo = $database->getUserInfoUsername($subuser); $this->username = $_SESSION['username'] = $this->userinfo['username']; $this->userid = $_SESSION['userid'] = $this->userinfo['user_id']; $this->userlevel = $_SESSION['userlevel'] = $this->userinfo['user_level']; $this->usercookiekey = $_SESSION['usercookiekey'] = $this->generateRandID(); $database->updateUserField($this->userid, "user_cookiekey", $this->usercookiekey); if($subhidden == "on") { $database->updateUserField($this->userid, "user_hidden", 1); $this->userhidden = $_SESSION['userhidden'] = 1; $database->addHiddenUser($this->userid); } else { $database->addActiveUser($this->userid); } ?> i know subhidden is on (echoed stuff there to test) the rest of the variables are getting set and even the database details are getting updated yet the session and variable are not getting set, any ideas why? Link to comment https://forums.phpfreaks.com/topic/134735-values-not-getting-set/ Share on other sites More sharing options...
blueman378 Posted December 1, 2008 Author Share Posted December 1, 2008 *Bump* Link to comment https://forums.phpfreaks.com/topic/134735-values-not-getting-set/#findComment-702812 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.