time = time(); $this->startSession(); } /** * startSession - Performs all the actions necessary to * initialize this session object. Tries to determine if the * the user has logged in already, and sets the variables * accordingly. Also takes advantage of this page load to * update the active visitors tables. */ function startSession(){ global $database; //The database connection session_start(); //Tell PHP to start the session /* Determine if user is logged in */ $this->logged_in = $this->checkLogin(); /** * Set guest value to users not logged in, and update * active guests table accordingly. */ if(!$this->logged_in){ $this->username = $_SESSION['username'] = GUEST_NAME; $this->userlevel = GUEST_LEVEL; $database->addActiveGuest($_SERVER['REMOTE_ADDR'], $this->time); } /* Update users last active timestamp */ else{ $database->addActiveUser($this->username, $this->time); } /* Remove inactive visitors from database */ $database->removeInactiveUsers(); $database->removeInactiveGuests(); /* Set referrer page */ if(isset($_SESSION['url'])){ $this->referrer = $_SESSION['url']; }else{ $this->referrer = "/"; } /* Set current url */ $this->url = $_SESSION['url'] = $_SERVER['PHP_SELF']; } /** * checkLogin - Checks if the user has already previously * logged in, and a session with the user has already been * established. Also checks to see if user has been remembered. * If so, the database is queried to make sure of the user's * authenticity. Returns true if the user has logged in. */ function checkLogin(){ global $database; //The database connection /* Check if user has been remembered */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookid'])){ $this->username = $_SESSION['username'] = $_COOKIE['cookname']; $this->userid = $_SESSION['userid'] = $_COOKIE['cookid']; } /* Username and userid have been set and not guest */ if(isset($_SESSION['username']) && isset($_SESSION['userid']) && $_SESSION['username'] != GUEST_NAME){ /* Confirm that username and userid are valid */ if($database->confirmUserID($_SESSION['username'], $_SESSION['userid']) != 0){ /* Variables are incorrect, user not logged in */ unset($_SESSION['username']); unset($_SESSION['userid']); return false; } /* User is logged in, set class variables */ $this->userinfo = $database->getUserInfo($_SESSION['username']); $this->username = $this->userinfo['username']; $this->userid = $this->userinfo['userid']; $this->userlevel = $this->userinfo['userlevel']; return true; } /* User not logged in */ else{ return false; } } /** * login - The user has submitted his username and password * through the login form, this function checks the authenticity * of that information in the database and creates the session. * Effectively logging in the user if all goes well. */ function login($subuser, $subpass, $subremember){ global $database, $form; //The database and form object /* Username error checking */ $field = "user"; //Use field name for username if(!$subuser || strlen($subuser = trim($subuser)) == 0){ $form->setError($field, "* Username not entered"); } else{ /* Check if username is not alphanumeric */ if(!eregi("^([0-9a-z])*$", $subuser)){ $form->setError($field, "* Username not alphanumeric"); } } /* Password error checking */ $field = "pass"; //Use field name for password if(!$subpass){ $form->setError($field, "* Password not entered"); } /* Return if form errors exist */ if($form->num_errors > 0){ return false; } /* Checks that username is in database and password is correct */ $subuser = stripslashes($subuser); $result = $database->confirmUserPass($subuser, md5($subpass)); /* Check error codes */ if($result == 1){ $field = "user"; $form->setError($field, "* Username not found"); } else if($result == 2){ $field = "pass"; $form->setError($field, "* Invalid password"); } /* Return if form errors exist */ if($form->num_errors > 0){ return false; } /* Username and password correct, register session variables */ $this->userinfo = $database->getUserInfo($subuser); $this->username = $_SESSION['username'] = $this->userinfo['username']; $this->userid = $_SESSION['userid'] = $this->generateRandID(); $this->userlevel = $this->userinfo['userlevel']; /* Insert userid into database and update active users table */ $database->updateUserField($this->username, "userid", $this->userid); $database->addActiveUser($this->username, $this->time); $database->removeActiveGuest($_SERVER['REMOTE_ADDR']); /** * This is the cool part: the user has requested that we remember that * he's logged in, so we set two cookies. One to hold his username, * and one to hold his random value userid. It expires by the time * specified in constants.php. Now, next time he comes to our site, we will * log him in automatically, but only if he didn't log out before he left. */ if($subremember){ setcookie("cookname", $this->username, time()+COOKIE_EXPIRE, COOKIE_PATH); setcookie("cookid", $this->userid, time()+COOKIE_EXPIRE, COOKIE_PATH); } /* Login completed successfully */ return true; } /** * logout - Gets called when the user wants to be logged out of the * website. It deletes any cookies that were stored on the users * computer as a result of him wanting to be remembered, and also * unsets session variables and demotes his user level to guest. */ function logout(){ global $database; //The database connection /** * Delete cookies - the time must be in the past, * so just negate what you added when creating the * cookie. */ if(isset($_COOKIE['cookname']) && isset($_COOKIE['cookid'])){ setcookie("cookname", "", time()-COOKIE_EXPIRE, COOKIE_PATH); setcookie("cookid", "", time()-COOKIE_EXPIRE, COOKIE_PATH); } /* Unset PHP session variables */ unset($_SESSION['username']); 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->username); $database->addActiveGuest($_SERVER['REMOTE_ADDR'], $this->time); /* Set user level to guest */ $this->username = GUEST_NAME; $this->userlevel = GUEST_LEVEL; } /** * register - Gets called when the user has just submitted the * registration form. Determines if there were any errors with * the entry fields, if so, it records the errors and returns * 1. If no errors were found, it registers the new user and * returns 0. Returns 2 if registration failed. */ function register($infoArray){ global $database, $form, $mailer; //The database, form and mailer object /* Username error checking */ $field = "user"; //Use field name for username if(!$infoArray['subuser'] || strlen($infoArray['subuser'] = trim($infoArray['subuser'])) == 0){ $form->setError($field, "* Username not entered"); } else{ /* Spruce up username, check length */ $infoArray['subuser'] = stripslashes($infoArray['subuser']); if(strlen($infoArray['subuser']) < 3){ $form->setError($field, "* Username below 3 characters"); } else if(strlen($infoArray['subuser']) > 30){ $form->setError($field, "* Username above 30 characters"); } /* Check if username is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", $infoArray['subuser'])){ $form->setError($field, "* Username not alphanumeric"); } /* Check if username is reserved */ else if(strcasecmp($infoArray['subuser'], GUEST_NAME) == 0){ $form->setError($field, "* Username reserved word"); } /* Check if username is already in use */ else if($database->usernameTaken($infoArray['subuser'])){ $form->setError($field, "* Username already in use"); } /* Check if username is banned */ else if($database->usernameBanned($infoArray['subuser'])){ $form->setError($field, "* Username banned"); } } /* Password error checking */ $field = "pass"; //Use field name for password if(!$infoArray['subpass']){ $form->setError($field, "* Password not entered"); } else{ /* Spruce up password and check length*/ $infoArray['subpass'] = stripslashes($infoArray['subpass']); if(strlen($infoArray['subpass']) < 4){ $form->setError($field, "* Password too short"); } /* Check if password is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", ($infoArray['subpass'] = trim($infoArray['subpass'])))){ $form->setError($field, "* Password not alphanumeric"); } /** * Note: I trimmed the password only after I checked the length * because if you fill the password field up with spaces * it looks like a lot more characters than 4, so it looks * kind of stupid to report "password too short". */ } /* Email error checking */ $field = "email"; //Use field name for email if(!$infoArray['subemail'] || strlen($infoArray['subemail'] = trim($infoArray['subemail'])) == 0){ $form->setError($field, "* Email not entered"); } else{ /* Check if valid email address */ $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*" ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*" ."\.([a-z]{2,}){1}$"; if(!eregi($regex,$infoArray['subemail'])){ $form->setError($field, "* Email invalid"); } $infoArray['subemail'] = stripslashes($infoArray['subemail']); } /* Errors exist, have user correct them */ if($form->num_errors > 0){ return 1; //Errors with form } /* No errors, add the new account to the db*/ else{ $infoArray['subpass'] = md5($infoArray['subpass']); if($valKey = $database->addNewUser($infoArray)){ if(EMAIL_WELCOME){ $mailer->sendWelcome($infoArray['subuser'],$infoArray['subemail'],$infoArray['subpassc'], $valKey); } return 0; //New user added succesfully }else{ return 2; //Registration attempt failed } } } /** * editAccount - Attempts to edit the user's account information * including the password, which it first makes sure is correct * if entered, if so and the new password is in the right * format, the change is made. All other fields are changed * automatically. */ function editAccount($infoArray){ global $database, $form; //The database and form object /* New password entered */ if($infoArray[subnewpass]){ /* Current Password error checking */ $field = "curpass"; //Use field name for current password if(!$infoArray[subcurpass]){ $form->setError($field, "* Current Password not entered"); } else{ /* Check if password too short or is not alphanumeric */ $infoArray[subcurpass] = stripslashes($infoArray[subcurpass]); if(strlen($infoArray[subcurpass]) < 4 || !eregi("^([0-9a-z])+$", ($infoArray[subcurpass] = trim($infoArray[subcurpass])))){ $form->setError($field, "* Current Password incorrect"); } /* Password entered is incorrect */ if($database->confirmUserPass($this->username,md5($infoArray[subcurpass])) != 0){ $form->setError($field, "* Current Password incorrect"); } } /* New Password error checking */ $field = "newpass"; //Use field name for new password /* Spruce up password and check length*/ $subpass = stripslashes($infoArray[subnewpass]); if(strlen($infoArray[subnewpass]) < 4){ $form->setError($field, "* New Password too short"); } /* Check if password is not alphanumeric */ else if(!eregi("^([0-9a-z])+$", ($infoArray[subnewpass] = trim($infoArray[subnewpass])))){ $form->setError($field, "* New Password not alphanumeric"); } } /* Change password attempted */ else if($infoArray[subcurpass]){ /* New Password error reporting */ $field = "newpass"; //Use field name for new password $form->setError($field, "* New Password not entered"); } /* Email error checking $field = "email"; //Use field name for email if($subemail && strlen($subemail = trim($subemail)) > 0){ // Check if valid email address $regex = "^[_+a-z0-9-]+(\.[_+a-z0-9-]+)*" ."@[a-z0-9-]+(\.[a-z0-9-]{1,})*" ."\.([a-z]{2,}){1}$"; if(!eregi($regex,$subemail)){ $form->setError($field, "* Email invalid"); } $subemail = stripslashes($subemail); }*/ /* Errors exist, have user correct them */ if($form->num_errors > 0){ return false; //Errors with form } $database->updateUserField($this->username,"headline",$infoArray[subheadline]); $database->updateUserField($this->username,"ufname",$infoArray[subfname]); $database->updateUserField($this->username,"ulname",$infoArray[sublname]); $database->updateUserField($this->username,"gender",$infoArray[subgender]); $database->updateUserField($this->username,"phone",$infoArray[subphone]); $database->updateUserField($this->username,"deglvl",$infoArray[subdeglvl]); $database->updateUserField($this->username,"indlvl",$infoArray[subindlvl]); $database->updateUserField($this->username,"ececonc",$infoArray[subececonc]); $database->updateUserField($this->username,"site",$infoArray[subsite]); /* Update password since there were no errors */ if($infoArray[subcurpass] && $infoArray[subnewpass]){ $database->updateUserField($this->username,"password",md5($infoArray[subnewpass])); } /* Change Email if($subemail){ $database->updateUserField($this->username,"email",$subemail); }*/ /* Success! */ return true; } /** * isAdmin - Returns true if currently logged in user is * an administrator, false otherwise. */ function isAdmin(){ return ($this->userlevel == ADMIN_LEVEL || $this->username == ADMIN_NAME); } /** * generateRandID - Generates a string made up of randomized * letters (lower and upper case) and digits and returns * the md5 hash of it to be used as a userid. */ function generateRandID(){ return md5($this->generateRandStr(16)); } /** * generateRandStr - Generates a string made up of randomized * letters (lower and upper case) and digits, the length * is a specified parameter. */ 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 verifyMemValKey($memName, $valKey) { global $database; //The database object $verifyResult = $database->verifyMemKey($memName, $valKey); if($verifyResult == 0) { $database->updateUserField($memName,"userlevel","2"); $database->updateUserField($memName,"key","fin"); echo("exit point\n"); return 0; } return $verifyResult; } }; /** * Initialize session object - This must be initialized before * the form object because the form uses session variables, * which cannot be accessed unless the session has started. */ $session = new Session; /* Initialize form object */ $form = new Form; ?>
    
 

Induction // Latest Instance: ()
Once every semester, new members are selected to join the ranks of Eta Kappa Nu, based on their achievement and integrity in the field of Electrical & Computer Engineering.

This formal process begins with department selection and invitation, continues with the inductees' completion of HKN pre-membership requirements, and finalizes through the Sigma Chapter HKN Induction Ceremony and Banquet.

These proud students regard this as one of their preeminent achievements in the field of Electrical & Computer Engineering here, at Carnegie Mellon. While the induction ceremony shall be reserved only for current members and new inductees, the subsequent banquet is open to an additional non-HKN guest as long as the officers are notified of your plans, accordingly.

Welcome. members present, guests present.

Error processing page