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; ?>
    
 

History of HKN


The Eta Kappa Nu honor society is a unique membership organization dedicated to encouraging and recognizing excellence in the field of electrical and computer engineering. Members consist of students, alumni, and other professionals who have demonstrated exceptional academic and professional accomplishments. Only those students that exist within the top fourth of the junior class, top third of the senior class, or the top third of the graduate class are considered.

Eta Kappa Nu was formed as a result of the vision of Maurice L. Carr, an electrical engineering student at the University of Illinois at Urbana-Champaign. He shared his vision of a unique organization that recognized academic excellence in engineering with nine other students, and together they founded Eta Kappa Nu on October 28, 1904. Although the organization's original purpose was to honor scholarship, it was also noted that selecting students with the character and attitude that would make them probable leaders in the profession was even more important.

Eta Kappa Nu is a nonprofit, public-service organization comprising nearly 200 university chapters, a variety of committees, many active member volunteers, and thousands of student members. A Board of Governors provides the leadership and guidance to Eta Kappa Nu and a set of Operating Procedures provides the basis for the association's day-to-day operations. Numerous committees composed of Board members and volunteers provide additional service to the organization. Management services for HKN are provided by the International Engineering Consortium (IEC) -- a nonprofit educational and service organization that serves industry and academia. The Electrical and Computer Engineering Department Heads Association is also managed by the IEC.


Fig. 1: The Crest of Eta Kappa Nu

HKN at Carnegie Mellon (Sigma Chapter)


It is a distinctive honor to be recognized as a member of Eta Kappa Nu, particularly within the Sigma chapter of HKN at Carnegie Mellon University. Sigma membership consists of over 70 students from the Junior and Senior classes as well as graduate students. Our objective is to promote a greater level of interaction between students, faculty and corporate representatives in both academic and social settings. What we do:

:: Professional Connections Program - Eta Kappa Nu strives to connect its members with top professionals by hosting events exclusively for HKN members.

:: Community Building - Eta Kappa Nu seeks to support the ECE community at large. HKN sponsors a snack night every Wednesday that is open to the public, allowing students to get together and take a short break from work.

:: Mentoring Program - This year the mentoring program will be focused on a variety of new and innovative ways to connect with ECE students, including freshmen that are considering declaring ECE as a major.

:: Department Tours - Our members volunteer to give the popular department tours to incoming students considering ECE at CMU for their post-secondary education.

:: HKN Excellence in Teaching Award - Each year at graduation, our HKN chapter gives an award to a faculty member who has a clear dedication to undergraduate education and has made a significant impact on his/her students.


Joining HKN-Sigma


In the Fall of Junior Year, HKN will contact current ECE students that satisfy the following requirements: top fourth of the junior class, top third of the senior class, or top third of masters students. This maintains our strict requirements for achieving members that have shown great passion in their work. There are many benefits to joining HKN, including lifelong membership and tons (I mean TONS) of free food. Members are required a one-time membership fee to join, to cover chapter fees. We understand that HKN may seem like any other society, requiring fees for a small line on the resume. However, HKN is what you put into it. Our members are also the same friends we see in every class, in the halls, and around campus. If you have questions about joining, please come to an HKN event (such as Snack Night) and ask our members!

Contact Details


Executive Board, HKN-Sigma: hkn-officers@lists.andrew.cmu.edu

Welcome. members present, guests present.

Error processing page