login system error

Hey,
I’m fairly new with PHP and SQL.
I’m working on a full login system with a bunch of features and stuff. The main part of it is up now, and all the pages work, but when you try to signup for it, it just goes to a blank page. It doesn’t say what or where the error is like it usually does, so I don’t know what the problem is. The process page is included below, which seems to be where the error is. I do have comments on pretty much every line of code to keep from confusing myself. This is the first time I’ve actually made anything complex in php.
Any help is appreciated.
[php]<?php
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: main.php”);
}
}

/**
* 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 $session;
$retval = $session->logout();
header(“Location: main.php”);
}

/**
* 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 $session, $form;
/
Convert username to all lowercase (by option) /
if(ALL_LOWERCASE){
$_POST[‘user’] = strtolower($_POST[‘user’]);
}
/
Registration attempt */
$retval = $session->register($_POST[‘user’], $_POST[‘pass’], $_POST[‘email’]);

  /* Registration Successful */
  if($retval == 0){
     $_SESSION['reguname'] = $_POST['user'];
     $_SESSION['regsuccess'] = true;
     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'] = false;

// 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;
/
Username error checking /
$subuser = $_POST[‘user’];
$field = “user”; //Use field name for username
if(!$subuser || strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "
Username not entered
");
}
else{
/* Make sure username is in database /
$subuser = stripslashes($subuser);
if(strlen($subuser) < 5 || strlen($subuser) > 30 ||
!eregi("^([0-9a-z])+$", $subuser) ||
(!$database->usernameTaken($subuser))){
$form->setError($field, "
Username does not exist
");
}
}

  /* 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(8);
     
     /* 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)){
        /* Email sent, update database */
        $database->updateUserField($subuser, "password", md5($newpass));
        $_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[‘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;

?>[/php]

[size=99px]**Mod Edit - Added PHP tags for better readability.[/size]

There is usually 2 reasons for a blank page. Now mind you, usually, not always.

1st: Error reporting hasn’t been turned on. In this case try error_reporting(), but this doesn’t seem to be your problem as you said it normally returns errors, but still doesn’t hurt to have on during debugging process to force errors to show.

2nd: You script is getting into an empty or nondisplaying if/else statement. What I mean is there is somewhere in the code that it is returning to an if or else statement where there is nothing to display.

My suggestions is, for debugging purposes, in every where ever there maybe an if else echo something out stating where you are at. For Example:

if(blahblah)
{
echo “In the Blah If”;
}
else
{
echo “In the Blah Else”;
}

This should help you to at least understand where you script is going/getting to.

Sponsor our Newsletter | Privacy Policy | Terms of Service