Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/03/2011, 08:59
arperez
 
Fecha de Ingreso: julio-2005
Mensajes: 26
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Respuesta: Error en Sistema de recuperación de contraseña.

Aqui esta la segunda parte del código de session.php
Código PHP:
   /**
    * 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$subemail){
      global 
$database$form$mailer;  //The database, form and mailer object
      
      /* Username error checking */
      
$field "user";  //Use field name for username
      
if(!$subuser || strlen($subuser trim($subuser)) == 0){
         
$form->setError($field"* Usuario no existe.");
      }
      else{
         
/* Spruce up username, check length */
         
$subuser stripslashes($subuser);
         if(
strlen($subuser) < 5){
            
$form->setError($field"* Nombre de usuario por debajo de 5 caracteres.");
         }
         else if(
strlen($subuser) > 30){
            
$form->setError($field"* Nombre de usuario superior a 30 caracteres.");
         }
         
/* Check if username is not alphanumeric */
         
else if(!eregi("^([0-9a-z])+$"$subuser)){
            
$form->setError($field"* Nombre de usuario no alfanumérico.");
         }
         
/* Check if username is reserved */
         
else if(strcasecmp($subuserGUEST_NAME) == 0){
            
$form->setError($field"* Nombre de usuario con palabras reservadas.");
         }
         
/* Check if username is already in use */
         
else if($database->usernameTaken($subuser)){
            
$form->setError($field"* Nombre de usuario ya está en uso.");
         }
         
/* Check if username is banned */
         
else if($database->usernameBanned($subuser)){
            
$form->setError($field"* Nombre de usuario prohibido.");
         }
      }

      
/* Password error checking */
      
$field "pass";  //Use field name for password
      
if(!$subpass){
         
$form->setError($field"* Contraseña no existe.");
      }
      else{
         
/* Spruce up password and check length*/
         
$subpass stripslashes($subpass);
         if(
strlen($subpass) < 4){
            
$form->setError($field"* Contraseña muy corta");
         }
         
/* Check if password is not alphanumeric */
         
else if(!eregi("^([0-9a-z])+$", ($subpass trim($subpass)))){
            
$form->setError($field"* Contraseña no alfanumérico.");
         }
         
/**
          * 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(!$subemail || strlen($subemail trim($subemail)) == 0){
         
$form->setError($field"* Email no existe.");
      }
      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,$subemail)){
            
$form->setError($field"* Email incorrecto.");
         }
         
$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 */
      
else{
         if(
$database->addNewUser($subusermd5($subpass), $subemail)){
            if(
EMAIL_WELCOME){
               
$mailer->sendWelcome($subuser,$subemail,$subpass);
            }
            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($subcurpass$subnewpass$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"* Contraseña actual no entró.");
         }
         else{
            
/* Check if password too short or is not alphanumeric */
            
$subcurpass stripslashes($subcurpass);
            if(
strlen($subcurpass) < ||
               !
eregi("^([0-9a-z])+$", ($subcurpass trim($subcurpass)))){
               
$form->setError($field"* Contraseña actual incorrecta.");
            }
            
/* Password entered is incorrect */
            
if($database->confirmUserPass($this->username,md5($subcurpass)) != 0){
               
$form->setError($field"* Contraseña actual incorrecta.");
            }
         }
         
         
/* New Password error checking */
         
$field "newpass";  //Use field name for new password
         /* Spruce up password and check length*/
         
$subpass stripslashes($subnewpass);
         if(
strlen($subnewpass) < 4){
            
$form->setError($field"* Nueva contraseña demasiado corta.");
         }
         
/* Check if password is not alphanumeric */
         
else if(!eregi("^([0-9a-z])+$", ($subnewpass trim($subnewpass)))){
            
$form->setError($field"* Nueva contraseña no alfanumérica.");
         }
      }
      
/* Change password attempted */
      
else if($subcurpass){
         
/* New Password error reporting */
         
$field "newpass";  //Use field name for new password
         
$form->setError($field"* Nueva contraseña no entró.");
      }
      
      
/* 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 invalido.");
         }
         
$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){
         
$database->updateUserField($this->username,"password",md5($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;
   }
};


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

?> 
Espero me puedan decir donde estar el error.

Saludos.