First of all, I apologize for cross-posting this, but it is somewhat
urgent.  The code I'm pasting below is the login script for my college's
Music Festival Web Interface.  I say this is urgent because this
interface is in use as we speak.  Thw way it works (or is supposed to
work) is this:  A director registers for an account using the
registerdirector.php script (not included in this message).  An entry in
the Director table of my mysql database is created.  The director is
assigned a unique director_id, which identifies their ownership of all
data belonging to them.  When they log in, a query is sent to the
database to return all data where email_address == their username.
Their password is checked against the password in the database.  Their
director_id is returned and placed in the $directorid variable.  The
problem is that for some reason that I can't figure out, sometimes,
seemingly at random the $directorid variable is blank.  It should never
be blank, and I can't even come up with a theoretical scenario why it
would be blank.  Here's what my Director table looks like:

mysql> describe Director;
+---------------+-----------------+------+-----+---------+----------------+
| Field         | Type            | Null | Key | Default | Extra
|
+---------------+-----------------+------+-----+---------+----------------+
| director_id   | int(5) unsigned | NO   | PRI | NULL    |
auto_increment | 
| email_address | varchar(255)    | NO   |     |         |
| 
| password      | varchar(255)    | NO   |     |         |
| 
| director_name | varchar(255)    | NO   |     |         |
| 
| phone_number  | varchar(17)     | NO   |     |         |
| 
| fax_number    | varchar(17)     | YES  |     | NULL    |
| 
| cell_number   | varchar(12)     | YES  |     | NULL    |
| 
+---------------+-----------------+------+-----+---------+----------------+
7 rows in set (0.15 sec)

And here's my code:

<?
   session_start();

   require_once("miscfunc.php");

   $page = "login.php";

   include("dbconnect.php");
   $loginuser = $_POST['user'];
   $loginpass = stripslashes($_POST['passwd']);
   
   $tableName = "Director";
   $query = "SELECT * FROM ".$tableName." WHERE email_address=
\"$loginuser\";";
//print "$query<br><br>\n";   
   $result = mysql_query($query, $link) or die ("Could not connect to
the database.  ".mysql_error());
   $a_row = mysql_fetch_array($result, MYSQL_ASSOC);
   
   $string = $a_row['password'];
   if ($loginpass == $a_row['password'])
   {

      set_var("loggedin", true);
      $emailaddress = $loginuser;
      $loggedin = true;

      
      set_var("loggedin", $loggedin);
      set_var("loginuser", $loginuser);
      set_var("emailaddress", $emailaddress);
      
      $directorid = $a_row['director_id'];

if ($directorid == 0 || $directorid = " ")
{
//We have a problem
$message = $message."\nDirectorID = $directorid\n";
$message = $message."\nLoginUser = $loginuser\n";
$message = $message."\nPassword = $loginpass\n";
if (!mail("[EMAIL PROTECTED]", "DirectorID 0", $message)) print
"There was a problem; Could not send a report of the problem to the
webmaster<br><br>\n";
}
      set_var("directorid", $directorid);
      $action = "$loginuser logged in.";
      $log = "INSERT INTO Logs (session_id, type, director_id,
time_stamp, action) VALUES(\"".session_id()."\", \"Login\",
\"$directorid\", \"".time()."\", \"$action\");";
      mysql_query($log, $link) or die("Could not create log record:
".mysql_error());



      include("mainpage.php");
   }
   else
   {
      print "Login incorrect.  Do you need to register?";
      include("index.php");
   }
?>

Please help.  I don't want the directors who participate in our contest
to lose faith in our Music Program because of my mistakes...
-Michael Sullivan-

Reply via email to