Jump to content

PHP Login Help!


Ratee

Recommended Posts

okay so i have a file called login.php but when you login it stay's on the same page... + i want it to go to a different page... so a user log's in from login.php and i want it to go to a new file called main.php i have some code below i was wondering if someone could help me separate the code to make it 2 pages...

 

 

login.php

<?php

include("include/session.php");
global $database;
$config = $database->getConfigs();
?>

<html>
<head>
<link rel="stylesheet" href="include/style.css" type="text/css">
<title><?php echo $config['SITE_NAME']; ?> - Login Page</title>

</head>
<body>
<div id="mainborder">
<tr>

    <td>	
    <div class="image">
      <p align="center"><a href="index.php"><img src="images/logo.gif" width="850" height="130"></a>
      <div class="sidebox">
      </div> 
      </div>
      <p align="left">
      
            
      <table width="95%" class="topbar">

<tr>

	<td>

	<marquee scrollamount='3'>Welcome to pokemon RPG please report all bugs/errors to the site admin:) #Rate</marquee>		</td>

</tr>

</table>

        <table width="100%" border="0" cellpadding="0" cellspacing="0">
      </p>
      <tr>

      <td valign="top" width="150">

    <div style="height:7px;"></div>


<div class="headbox">Navigation</div>
	  <a class="leftmenu" href="index.php">Home</a>
	  <a class="leftmenu" href="login.php">Login</a>
	  <a class="leftmenu" href="register.php">Register</a>
	  <a class="leftmenu" href="#">About/FAQ</a>
	  <a class="leftmenu" href="#">Forum</a>
          <a class="leftmenu" href="#">Chat Box</a><br>


<br />

<td valign="top">

            <table border="0" cellspacing="0" cellpadding="0" width="100%">

              <tr>

                <td width="10"></td>

                <td valign="top" class="mainbox">
<div class="contentcontent">  </div>
<div id="mainContent">
<table class="content">
<br />


<?php
/**
* User has already logged in, so display relavent links, including
* a link to the admin center if the user is an administrator.
*/
if($session->logged_in){
   echo "<h1>Logged In</h1>";
   echo "Welcome <b>$session->username</b>, you are logged in. <br><br>"
       ."[<a href=\"userinfo.php?user=$session->username\">My Account</a>]   "
       ."[<a href=\"useredit.php\">Edit Account</a>]   ";
   if($session->isAdmin()){
      echo "[<a href=\"admin/index.php\">Admin Center</a>]   ";
   }
   echo "[<a href=\"process.php\">Logout</a>]";
}
else{
?>


<?php
/**
* User not logged in, display the login form.
* If user has already tried to login, but errors were
* found, display the total number of errors.
* If errors occurred, they will be displayed.
*/
if($form->num_errors > 0){
   echo "<font size=\"2\" color=\"#ff0000\">".$form->num_errors." error(s) found</font>";
}
?>

<div class="loginbox">
Member Login
</div>
<form action="process.php" method="POST" autocomplete="on">
<tr>
<table class="contentcontent" align="left" border="0" cellspacing="0" cellpadding="3">
<tr><td>Username:</td><td><input type="text" name="user" maxlength="30" value="<?php echo $form->value("user"); ?>"></td><td><?php echo $form->error("user"); ?></td></tr>
<tr><td>Password:</td><td><input type="password" name="pass" maxlength="30" value="<?php echo $form->value("pass"); ?>"></td><td><?php echo $form->error("pass"); ?></td></tr>
<tr><td colspan="2" align="left"><input type="checkbox" name="remember" <?php if($form->value("remember") != ""){ echo "checked"; } ?>>
Remember me     
<input type="hidden" name="sublogin" value="1">
<input type="submit" value="Login"></td></tr>
<tr><td colspan="2" align="left"><br><font size="2">[<a href="forgotpass.php">Forgot Password?</a>]</font></td><td align="right"></td></tr>

</form>




<table width="875">



<tr>


<br />
<br />
    <td width="902" height="20" colspan="2" align="center" class="maincontent"><br /><div class="contentcontent">This site is not affiliated with Nintendo, Creatures Ink, Gamefreak or any other organisation. Legal Info
</br><?php }
echo "";
include("include/view_active.php");?></div>
    </td>
  </tr>
  
</table>



</body>
</html>

 

process.php

<?php

include("include/session.php");

class Process
{
   /* Class constructor */
   function Process(){
      global $session;
      /* User submitted login form */
      if(isset($_POST['sublogin'])){
         $this->procLogin();
      }
      /* User submitted registration form */
      else if(isset($_POST['subjoin'])){
         $this->procRegister();
      }
      /* User submitted forgot password form */
      else if(isset($_POST['subforgot'])){
         $this->procForgotPass();
      }
      /* User submitted edit account form */
      else if(isset($_POST['subedit'])){
         $this->procEditAccount();
      }
      /**
       * The only other reason user should be directed here
       * is if he wants to logout, which means user is
       * logged in currently.
       */
      else if($session->logged_in){
         $this->procLogout();
      }
      /**
       * Should not get here, which means user is viewing this page
       * by mistake and therefore is redirected.
       */
       else{
          header("Location: ".$config['WEB_ROOT'].$config['home_page']);
       }
   }

   /**
    * procLogin - Processes the user submitted login form, if errors
    * are found, the user is redirected to correct the information,
    * if not, the user is effectively logged in to the system.
    */
   function procLogin(){
      global $session, $form;
      /* Login attempt */
      $retval = $session->login($_POST['user'], $_POST['pass'], isset($_POST['remember']));
      
      /* Login successful */
      if($retval){
         header("Location: ".$session->referrer);
      }
      /* Login failed */
      else{
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
         header("Location: ".$session->referrer);
      }
   }
   
   /**
    * procLogout - Simply attempts to log the user out of the system
    * given that there is no logout form to process.
    */
   function procLogout(){
      global $database, $session;
      $config = $database->getConfigs();
      $retval = $session->logout();
      header("Location: ".$config['WEB_ROOT'].$config['home_page']);
   }
   
   /**
    * procRegister - Processes the user submitted registration form,
    * if errors are found, the user is redirected to correct the
    * information, if not, the user is effectively registered with
    * the system and an email is (optionally) sent to the newly
    * created user.
    */
   function procRegister(){
      global $database, $session, $form;
      $config = $database->getConfigs();
  
  /* Checks if registration is disabled */
  if($config['ACCOUNT_ACTIVATION'] == 4){
  	$_SESSION['reguname'] = $_POST['user'];
        $_SESSION['regsuccess'] = 6;
	header("Location: ".$session->referrer);
  }
  
      /* Convert username to all lowercase (by option) */
      if($config['ALL_LOWERCASE'] == 1){
         $_POST['user'] = strtolower($_POST['user']);
      }
      /* Hidden form field captcha deisgned to catch out auto-fill spambots */
      if (!empty($_POST['killbill'])) { $retval = 2; } else {
      /* Registration attempt */
      $retval = $session->register($_POST['user'], $_POST['pass'], $_POST['conf_pass'], $_POST['email'], $_POST['conf_email']);
      }
      
      /* Registration Successful */
      if($retval == 0){
         $_SESSION['reguname'] = $_POST['user'];
         $_SESSION['regsuccess'] = 0;
         header("Location: ".$session->referrer);
      }
      /* E-mail Activation */
      else if($retval == 3){
         $_SESSION['reguname'] = $_POST['user'];
         $_SESSION['regsuccess'] = 3;
         header("Location: ".$session->referrer);
      }
      /* Admin Activation */
      else if($retval == 4){
         $_SESSION['reguname'] = $_POST['user'];
         $_SESSION['regsuccess'] = 4;
         header("Location: ".$session->referrer);
      }
      /* No Activation Needed but E-mail going out */
      else if($retval == 5){
         $_SESSION['reguname'] = $_POST['user'];
         $_SESSION['regsuccess'] = 5;
         header("Location: ".$session->referrer);
      }
      /* Error found with form */
      else if($retval == 1){
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
         header("Location: ".$session->referrer);
      }
      /* Registration attempt failed */
      else if($retval == 2){
         $_SESSION['reguname'] = $_POST['user'];
         $_SESSION['regsuccess'] = 2;
         header("Location: ".$session->referrer);
      }
   }
   
   /**
    * procForgotPass - Validates the given username then if
    * everything is fine, a new password is generated and
    * emailed to the address the user gave on sign up.
    */
   function procForgotPass(){
      global $database, $session, $mailer, $form;
      $config = $database->getConfigs();
      /* Username error checking */
      $subuser = $_POST['user'];
      $subemail = $_POST['email'];
      $field = "user";  //Use field name for username
      if(!$subuser || strlen($subuser = trim($subuser)) == 0){
         $form->setError($field, "* Username not entered<br>");
      }
      else{
         /* Make sure username is in database */
         $subuser = stripslashes($subuser);
         if(strlen($subuser) < $config['min_user_chars'] || strlen($subuser) > $config['max_user_chars'] ||    
            !preg_match("/^[a-z0-9]([0-9a-z_-])+$/i", $subuser) ||
            (!$database->usernameTaken($subuser))){
            $form->setError($field, "* Username does not exist<br>");
          } 
          else if ($database->checkUserEmailMatch($subuser, $subemail) == 0){
          	$form->setError($field, "* No Match<br>");
       }
      }
      
      /* Errors exist, have user correct them */
      if($form->num_errors > 0){
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
      }
      /* Generate new password and email it to user */
      else{
         /* Generate new password */
         $newpass = $session->generateRandStr(;
         
         /* Get email of user */
         $usrinf = $database->getUserInfo($subuser);
         $email  = $usrinf['email'];
         
         /* Attempt to send the email with new password */
         if($mailer->sendNewPass($subuser,$email,$newpass,$config)){
            /* Email sent, update database */
            $usersalt = $session->generateRandStr(;
      	    $newpass = sha1($usersalt.$newpass);
            $database->updateUserField($subuser,"password",$newpass);
            $database->updateUserField($subuser,"usersalt",$usersalt);
            $_SESSION['forgotpass'] = true;
         }
         /* Email failure, do not change password */
         else{
            $_SESSION['forgotpass'] = false;
         }
      }
      
      header("Location: ".$session->referrer);
   }
   
   /**
    * procEditAccount - Attempts to edit the user's account
    * information, including the password, which must be verified
    * before a change is made.
    */
   function procEditAccount(){
      global $session, $form;
      /* Account edit attempt */
      $retval = $session->editAccount($_POST['curpass'], $_POST['newpass'], $_POST['conf_newpass'], $_POST['email']);

      /* Account edit successful */
      if($retval){
         $_SESSION['useredit'] = true;
         header("Location: ".$session->referrer);
      }
      /* Error found with form */
      else{
         $_SESSION['value_array'] = $_POST;
         $_SESSION['error_array'] = $form->getErrorArray();
         header("Location: ".$session->referrer);
      }
   }
};

/* Initialize process */
$process = new Process;

?>

 

Thankyou for your help in advance.

 

 

Link to comment
https://forums.phpfreaks.com/topic/259332-php-login-help/
Share on other sites

session.php

<?php
include("database.php");
include("mailer.php");
include("form.php");

class Session
{
   public $username;     //Username given on sign-up
   public $userid;       //Random value generated on current login
   public $userlevel;    //The level to which the user pertains
   public $time;         //Time user was last active (page loaded)
   public $logged_in;    //True if user is logged in, false otherwise
   public $userinfo = array();  //The array holding all user info
   public $url;          //The page url current being viewed
   public $referrer;     //Last recorded site page viewed
   /**
    * Note: referrer should really only be considered the actual
    * page referrer in process.php, any other time it may be
    * inaccurate.
    */

   /* Class constructor */
   function Session(){
      $this->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(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $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, $subpass);

      /* Check error codes */
      
      if($result == 1 || $result == 2){
	$field = "user";
	$form->setError($field, "* Login is invalid. Please try again");
      }
      else if($result == 3){
  	  	$field = "user";
  	  	$form->setError($field, "* Your account has not been activated yet");
  }
      else if($result == 4){
  	  	$field = "user";
  	  	$form->setError($field, "* Your account has not been activated by admin yet");
  }
      
      /* 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 the admin configuration panel. 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){
      	
	$config = $database->getConfigs();
        $cookie_expire = $config['COOKIE_EXPIRE'];
        $cookie_path = $config['COOKIE_PATH'];
        
        setcookie("cookname", $this->username, time()+60*60*24*$cookie_expire, $cookie_path);
        setcookie("cookid",   $this->userid,   time()+60*60*24*$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'])){
      	
	$config = $database->getConfigs();
      	$cookie_expire = $config['COOKIE_EXPIRE'];
      	$cookie_path = $config['COOKIE_PATH'];
      
         setcookie("cookname", "", time()-60*60*24*$cookie_expire, $cookie_path);
         setcookie("cookid",   "", time()-60*60*24*$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;
      
      /* Destroy session */
      session_destroy();
   }

   /**
    * 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($subuser, $subpass, $subconf_pass, $subemail, $subconf_email){
      global $database, $form, $mailer;  //The database, form and mailer object
      $token = $this->generateRandStr(16);	
      $config = $database->getConfigs();
      /* Username error checking */
      $field = "user";  //Use field name for username
      if(!$subuser || strlen($subuser = trim($subuser)) == 0){
         $form->setError($field, "* Username not entered");
      }
      else{
         /* Spruce up username, check length */
         $subuser = stripslashes($subuser);
         if(strlen($subuser) < $config['min_user_chars']){
            $form->setError($field, "* Username below 5 characters");
         }
         else if(strlen($subuser) > $config['max_user_chars']){
            $form->setError($field, "* Username above 30 characters");
         }
         /* Check if username is not alphanumeric */
         else if(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $subuser)){      	
            $form->setError($field, "* Username not alphanumeric");
         }
         /* Check if username is reserved */
         else if(strcasecmp($subuser, GUEST_NAME) == 0){
            $form->setError($field, "* Username reserved word");
         }
         /* Check if username is already in use */
         else if($database->usernameTaken($subuser)){
            $form->setError($field, "* Username already in use");
         }
         /* Check if username is banned */
         else if($database->usernameBanned($subuser)){
            $form->setError($field, "* Username banned");
         }
      }

      /* Password error checking */
      $field = "pass";  //Use field name for password
      if(!$subpass){
         $form->setError($field, "* Password not entered");
      }
      else{
         /* Spruce up password and check length*/
         $subpass = stripslashes($subpass);
         if(strlen($subpass) < $config['min_pass_chars']){
            $form->setError($field, "* Password too short");
         }
         /* Check if password is too long */
         else if(strlen($subpass) > $config['max_pass_chars'] ){
         	$form->setError($field, "* Password too long");
         }
         /* Check if password is not alphanumeric */
         else if(!preg_match("/^([0-9a-z])+$/i", ($subpass = trim($subpass)))){
            $form->setError($field, "* Password not alphanumeric");
         }
          /* Check if passwords match */
         else if($subpass != $subconf_pass){
            $form->setError($field, "* Passwords do not match");
         }
      }
      
      /* Email error checking */
      $field = "email";  //Use field name for email
      if(!$subemail || strlen($subemail = trim($subemail)) == 0){
         $form->setError($field, "* Email not entered");
      }
      else{
         /* Check if valid email address using PHPs filter_var */
         if(!filter_var($subemail, FILTER_VALIDATE_EMAIL)){
            $form->setError($field, "* Email invalid");
         }
       /* Check if emails match, not case-sensitive */
         else if (strcasecmp($subemail, $subconf_email)){
            $form->setError($field, "* Email addresses do not match");
         }
         $subemail = stripslashes($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 database */
      else{
      $usersalt = $this->generateRandStr(;	
      if($database->addNewUser($subuser, $subpass, $subemail, $token, $usersalt)){
  	  	/* Check Account activation setting and process accordingly. */
      	
  	  	/* E-mail Activation */
      	if($config['ACCOUNT_ACTIVATION'] == 2){
  	  	$config = $database->getConfigs();
      	$mailer->sendActivation($subuser,$subemail,$subpass,$token,$config);
      	$successcode = 3;
  		}
  		/* Admin Activation */
        else if($config['ACCOUNT_ACTIVATION'] == 3){
  	  	$config = $database->getConfigs();
      	$mailer->adminActivation($subuser,$subemail,$subpass,$config);
      	$mailer->activateByAdmin($subuser,$subemail,$subpass,$token,$config);
      	$successcode = 4;
  		}
  		/* No Activation Needed but E-mail going out */
  		else if($config['EMAIL_WELCOME'] && $config['ACCOUNT_ACTIVATION'] == 1 ){
      	$config = $database->getConfigs();
  		$mailer->sendWelcome($subuser,$subemail,$subpass,$config);
  		$successcode = 5;	
  		}
  		else {
  		/* No Activation Needed and NO E-mail going out */
  		$successcode = 0;
  		}
  	  return $successcode;  //New user added succesfully
  }else{
  	  return 2;  //Registration attempt failed
  }
     }
   }
   
   /**
    * editConfigs - edits the site configurations in the database
    */
   function editConfigs($subsitename, $subsitedesc, $subemailfromname, $subadminemail, $subwebroot, $subhome_page, $subactivation, $submin_user_chars, $submax_user_chars, $submin_pass_chars, $submax_pass_chars, $subsend_welcome, $subenable_login_question, $sub_captcha, $sub_all_lowercase, $subcookie_expiry, $subcookie_path){
      global $database, $form;  //The database and form object
      
      /* New Sitename entered */
        if($subsitename){
      	   /* Sitename error checking */
      	   $field = "sitename";
           if(!$subsitename){
                $form->setError($field, "* Sitename not entered");
           }
           else if(strlen($subsitename) > 40) {
      	    $form->setError($field, "* Sitename above 40 characters");
           }
           else if(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $subsitename)){      	
            $form->setError($field, "* Sitename not alphanumeric");
        }
      }
      
         /* New Site Description entered */
        if($subsitename){
      	   /* Site description error checking */
      	   $field = "sitedesc";
           if(!$subsitedesc){
                $form->setError($field, "* Site description not entered");
           }
           else if(strlen($subsitedesc) > 60) {
      	    $form->setError($field, "* Site description above 60 characters");
           }
           else if(!preg_match("/^[a-z0-9]([0-9a-z_.-\s])+$/i", $subsitedesc)){      	
            $form->setError($field, "* Site description not alphanumeric");
        }
      }
        
      /* New E-mail From Name */
        if($subemailfromname){
        	/* Site Email From Name error checking */
        	$field = "emailfromname";
        	if(!$subemailfromname){
        		$form->setError($field, "* Email From Name not entered");
        	}
        	else if(strlen($subemailfromname) > 60) {
      	    $form->setError($field, "* From Name above 60 characters");
            }
            else if(!preg_match("/^[a-z0-9]([0-9a-z_.-\s])+$/i", $subemailfromname)){      	
            $form->setError($field, "* From Name not alphanumeric");
         }
        }
        
      /* New Admin Email Address */
        if($subadminemail){
        	/* Site Admin Email error checking */
        	$field = "adminemail";
        	if(!$subadminemail){
        		$form->setError($field, "* Admin Email not entered");
        	} else
         /* Check if valid email address using PHPs filter_var */
         if(!filter_var($subadminemail, FILTER_VALIDATE_EMAIL)){
            $form->setError($field, "* Email invalid");
         }
        } 
        
      /* New Minimum Username Characters */
        if($submin_user_chars){
        	/* Minimum Username Characters error checking */
        	$field = "min_user_chars";
        	if(!$submin_user_chars){
        		$form->setError($field, "* No minimum username length entered");
        	}
            else if(!preg_match("/^([0-9])+$/i", ($submin_user_chars = trim($submin_user_chars)))){
            	$form->setError($field, "* Minimum username field not numerical");
            }
        	else if ($submin_user_chars < 3){
        		$form->setError($field, "* Minimum username is below recommended level of 3");
        	}
            else if ($submin_user_chars > 20){
        		$form->setError($field, "* Minimum username is above recommended level of 20");
        	}
        }
        
      /* New Maximum Username Characters */
        if($submax_user_chars){
        	/* Maximum Username Characters error checking */
        	$field = "max_user_chars";
        	if(!$submax_user_chars){
        		$form->setError($field, "* No maximum username length entered");
        	}
            else if(!preg_match("/^([0-9])+$/i", ($submax_user_chars = trim($submax_user_chars)))){
            	$form->setError($field, "* Maximum username field not numerical");
            }
        	else if ($submax_user_chars < 6){
        		$form->setError($field, "* Maximum username is below recommended level of 6");
        	}
            else if ($submax_user_chars > 40){
        		$form->setError($field, "* Maximum username is above recommended level of 40");
        	}
        }   
        
         /* New Minimum Password Characters */
        if($submin_pass_chars){
        	/* Minimum Username Characters error checking */
        	$field = "min_pass_chars";
        	if(!$submin_pass_chars){
        		$form->setError($field, "* No minimum username length entered");
        	}
            else if(!preg_match("/^([0-9])+$/i", ($submin_pass_chars = trim($submin_pass_chars)))){
            	$form->setError($field, "* Minimum username field not numerical");
            }
        	else if ($submin_pass_chars < 4){
        		$form->setError($field, "* Minimum password is below recommended level of 4");
        	}
            else if ($submin_pass_chars > 10){
        		$form->setError($field, "* Minimum password is above recommended level of 10");
        	}
        }

      /* New Maximum Password Characters */
        if($submax_pass_chars){
        	/* Maximum Username Characters error checking */
        	$field = "max_pass_chars";
        	if(!$submax_pass_chars){
        		$form->setError($field, "* No maximum password length entered");
        	}
            else if(!preg_match("/^([0-9])+$/i", ($submax_pass_chars = trim($submax_pass_chars)))){
            	$form->setError($field, "* Maximum password field not numerical");
            }
        	else if ($submax_pass_chars < 10){
        		$form->setError($field, "* Maximum password is below recommended level of 10");
        	}
            else if ($submax_pass_chars > 110){
        		$form->setError($field, "* Maximum password is above recommended level of 110");
        	}
        }

        /* Cookie expiry */
        if($subcookie_expiry){
        	/* Check for number */
        	$field = "cookie_expiry";
        	if(!$subcookie_expiry){
        		$form->setError($field, "* No cookie expiry number entered");
        	}
            else if(!filter_var($subcookie_expiry, FILTER_VALIDATE_INT, array("options" => array("max_range"=>366)))){
            	$form->setError($field, "* Please enter a number between 0 and 365");
            }
        } 
        
     /* Errors exist, have user correct them */
       if($form->num_errors > 0){
         return false;  //Errors with form
      }
      
     /* Update site name since there were no errors */
      if($subsitename){
         $database->updateConfigs($subsitename,"SITE_NAME");
      }
      
      if($subsitedesc){
         $database->updateConfigs($subsitedesc,"SITE_DESC");
      }
      
      if($subemailfromname){
         $database->updateConfigs($subemailfromname,"EMAIL_FROM_NAME");
      }
      
      if($subadminemail){
         $database->updateConfigs($subadminemail,"EMAIL_FROM_ADDR");
      }
      
      if($subwebroot){
         $database->updateConfigs($subwebroot,"WEB_ROOT");
      }
      
   	  if($subhome_page){
         $database->updateConfigs($subhome_page,"home_page");
      }
      
      if($submin_user_chars){
         $database->updateConfigs($submin_user_chars,"min_user_chars");
      }
      
      if($submax_user_chars){
         $database->updateConfigs($submax_user_chars,"max_user_chars");
      }
      
      if($submin_pass_chars){
         $database->updateConfigs($submin_pass_chars,"min_pass_chars");
      }
      
      if($submax_pass_chars){
         $database->updateConfigs($submax_pass_chars,"max_pass_chars");
      }
      
      // Check for the existance of 0 otherwise IF will return false and not update.
      if($subsend_welcome == 0 || 1){
         $database->updateConfigs($subsend_welcome,"EMAIL_WELCOME");
      }
      
      if($subenable_login_question  == 0 || 1){
         $database->updateConfigs($subenable_login_question,"ENABLE_QUESTION");
      }
      
      if($sub_captcha  == 0 || 1){
         $database->updateConfigs($sub_captcha,"ENABLE_CAPTCHA");
      }
      
      if(filter_var($subactivation, FILTER_VALIDATE_INT)){
         $database->updateConfigs($subactivation,"ACCOUNT_ACTIVATION");
      }
      
   	  if($subcookie_expiry){
         $database->updateConfigs($subcookie_expiry,"COOKIE_EXPIRE");
      }
      
   	  if($sub_all_lowercase == 0 || 1){
         $database->updateConfigs($sub_all_lowercase,"ALL_LOWERCASE");
      }
      
      if($subcookie_path){
         $database->updateConfigs($subcookie_path,"COOKIE_PATH");
      }
      
      
      /* Success! */
      return true;
      
   }
   
   /**
    * adminEditAccount - function for admin to edit the user's account
    * details.
    */
   function adminEditAccount($subusername, $subnewpass, $subconfnewpass, $subemail, $subuserlevel, $subusertoedit){
      global $database, $form;  //The database and form object
      
      /* New password entered */
      if($subnewpass){
         /* New Password error checking */
         $field = "newpass";  //Use field name for new password
         /* Spruce up password and check length*/
         $subnewpass = stripslashes($subnewpass);
         if(strlen($subnewpass) < $config['min_pass_chars']){
            $form->setError($field, "* New Password too short");
         }
         /* Check if password is not alphanumeric */
         else if(!preg_match("/^([0-9a-z])+$/i", ($subnewpass = trim($subnewpass)))){
            $form->setError($field, "* New Password not alphanumeric");
         }
         /* Check if passwords match */
         else if($subnewpass != $subconfnewpass){
            $form->setError($field, "* Passwords do not match");
         }
      }
      
      /* New password entered */
      if($subuserlevel){
      	/* User level error checking */
      	$field = "userlevel";  //Use field name for userlevel
      	if(!preg_match("/^([0-9])+$/i", ($subuserlevel = trim($subuserlevel)))){
           $form->setError($field, "* Userlevel not numerical");
        }
      }
      
      /* New username entered */
      if($subusername){
      	/* Username error checking */
      	$field = "username";  //Use field name for userlevel
        if(!preg_match("/^[a-z0-9]([0-9a-z_-\s])+$/i", $subusername)){      	
            $form->setError($field, "* Username not alphanumeric");
         }
         /* Check if username is reserved */
         else if(strcasecmp($subusername, GUEST_NAME) == 0){
            $form->setError($field, "* Username reserved word");
         }
         /* Check if username is already in use */
         else if($subusertoedit !== $subusername && $database->usernameTaken($subusername)){
            $form->setError($field, "* Username already in use");
         }
         /* Check if username is banned */
         else if($database->usernameBanned($subusername)){
            $form->setError($field, "* Username banned");
         }
      }
      
      /* Email error checking */
      $field = "email";  //Use field name for email
      if($subemail && strlen($subemail = trim($subemail)) > 0){
         /* Check if valid email address */
         if(!filter_var($subemail, FILTER_VALIDATE_EMAIL)){
            $form->setError($field, "* Email invalid");
         }
         $subemail = stripslashes($subemail);
      }
      
      /* Errors exist, have user correct them */
      if($form->num_errors > 0){
         return false;  //Errors with form
      }
      
      /* Update userlevel since there were no errors */
      if($subuserlevel){
         $database->updateUserField($subusertoedit,"userlevel",$subuserlevel);
      }
      
      /* Update password since there were no errors */
      if($subnewpass){
         $usersalt = $this->generateRandStr(;
         $database->updateUserField($subusertoedit,"usersalt", $usersalt);
         $database->updateUserField($subusertoedit,"password", sha1($usersalt.$subnewpass));
      }
      
      /* Change Email */
      if($subemail){
         $database->updateUserField($subusertoedit,"email",$subemail);
      }
      
   /* Update username - this MUST GO LAST otherwise the username 
    * will change and subsequent changes like e-mail will not be changed.
    */
      if($subusername){
         $database->updateUserField($subusertoedit,"username",$subusername);
      }
      
      /* Success! */
      return true;
   }
   
   /**
    * 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($subcurpass, $subnewpass, $subconfnewpass, $subemail){
      global $database, $form;  //The database and form object
      /* New password entered */
      if($subnewpass){
         /* Current Password error checking */
         $field = "curpass";  //Use field name for current password
         if(!$subcurpass){
            $form->setError($field, "* Current Password not entered");
         }
         else{
            /* Check if password too short or is not alphanumeric */
            $subcurpass = stripslashes($subcurpass);
            if(strlen($subcurpass) < $config['min_pass_chars'] ||
               !preg_match("/^([0-9a-z])+$/i", ($subcurpass = trim($subcurpass)))){
               $form->setError($field, "* Current Password incorrect");
            }
            /* Password entered is incorrect */
            if($database->confirmUserPass($this->username,$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*/
         $subnewpass = stripslashes($subnewpass);
         if(strlen($subnewpass) < 4){
            $form->setError($field, "* New Password too short");
         }
         /* Check if password is not alphanumeric */
         else if(!preg_match("/^([0-9a-z])+$/i", ($subnewpass = trim($subnewpass)))){
            $form->setError($field, "* New Password not alphanumeric");
         }
         /* Check if passwords match */
         else if($subnewpass != $subconfnewpass){
            $form->setError($field, "* Passwords do not match");
         }
      }
      /* Change password attempted */
      else if($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 */
         if(!filter_var($subemail, FILTER_VALIDATE_EMAIL)){
            $form->setError($field, "* Email invalid");
         }
         $subemail = stripslashes($subemail);
      }
      
      /* Errors exist, have user correct them */
      if($form->num_errors > 0){
         return false;  //Errors with form
      }
      
      /* Update password since there were no errors */
      if($subcurpass && $subnewpass){
      	 $usersalt = $this->generateRandStr(;
      	 $subnewpass = sha1($usersalt.$subnewpass);
         $database->updateUserField($this->username,"password",$subnewpass);
         $database->updateUserField($this->username,"usersalt",$usersalt);
      }
      
      /* 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);
   }
   
   /**
    * isUserlevel - Returns true if currently logged in user is
    * at a certain userlevel, false otherwise.
    */
   function isUserlevel($level){
      return ($this->userlevel == $level);
   }
   
   /**
    * overUserlevel - Returns true if currently logged in user is
    * over a certain userlevel, false otherwise.
    */
   function overUserlevel($level){
      if ($this->userlevel > $level) { return true; }
      else {
      	return false;
      }
   }
   
   /**
    * 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;
   }
};

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

Link to comment
https://forums.phpfreaks.com/topic/259332-php-login-help/#findComment-1329366
Share on other sites

Too much code.

 

Your login script could just post to itself and use a header to redirect on success. The basic flow would be:

 

<?php // login.php
if(isset($_POST['login']))
{
// do login here, on success:
header("Location: main.php");
}
?>

<html>
...
<body>
<!-- form here -->
</body>
</html>

 

<?php //main.php
if(**not logged in**)
header("Location: login.php")

// print success message
?>

Link to comment
https://forums.phpfreaks.com/topic/259332-php-login-help/#findComment-1329411
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.