roller828 Posted April 22, 2009 Share Posted April 22, 2009 I found Jpmaster77's secure login script with admin features, etc. on http://www.evolt.org/PHP-Login-System-with-Admin-Features and it worked great until I added a new field into the database called "balance" to keep track of my customer's money. When I added that field, I went to go register a new account on my website, and it says "there was an error, try again later"... but then when I would delete the "balance" field, then it worked every time? what could be the cause of this? or if anyone has a better login system that works when you add new fields to it- then that would be even better. thanks in advance! Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/ Share on other sites More sharing options...
jackpf Posted April 22, 2009 Share Posted April 22, 2009 The best one would probably be the one you right yourself. If you right it yourself you'll know exactly how to mod/change it. Plus you'll learn php. Much more beneficial than copying someone elses scripts. Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-816629 Share on other sites More sharing options...
roller828 Posted April 22, 2009 Author Share Posted April 22, 2009 well does anyone know what could have caused something like that to happen? I have tried everything to my knowledge, but PHP isn't exactly my area, I'm more of a C++ guy. But could someone give me some educated guesses to what could be causing this problem? I will be able to go in and look at the code etc. All and every bit of help is appreciated. Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-816641 Share on other sites More sharing options...
jackpf Posted April 22, 2009 Share Posted April 22, 2009 Ahh. I've personally never heard of/used this script, so I have no idea. I shall leave this to someone who has... Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-816656 Share on other sites More sharing options...
roller828 Posted April 29, 2009 Author Share Posted April 29, 2009 I still can't figure out what could possibly be happening... does anyone else have an alternative look on what's going on here? Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-822161 Share on other sites More sharing options...
revraz Posted April 29, 2009 Share Posted April 29, 2009 Without seeing code, it's impossible to help you. I am only assuming that they may be using something like INSERT INTO table VALUES ('blah', 'blah') without defining the actual field names, and now that you added one, the field count no longer matches. Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-822175 Share on other sites More sharing options...
roller828 Posted April 29, 2009 Author Share Posted April 29, 2009 ahh, okay, i think i found the php file that was causing that... so could this have anything to do with the problem?... so where it says "INSER INTO" just add "$balance" or something onto the end of that string and put it on the database at the end of the table right? thanks so much <? /** * Database.php * * The Database class is meant to simplify the task of accessing * information from the website's database. * * Written by: Jpmaster77 a.k.a. The Grandmaster of C++ (GMC) * Last Updated: August 17, 2004 */ include("constants.php"); class MySQLDB { var $connection; //The MySQL database connection var $num_active_users; //Number of active users viewing site var $num_active_guests; //Number of active guests viewing site var $num_members; //Number of signed-up users /* Note: call getNumMembers() to access $num_members! */ /* Class constructor */ function MySQLDB(){ /* Make connection to database */ $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error()); mysql_select_db(DB_NAME, $this->connection) or die(mysql_error()); /** * Only query database to find out number of members * when getNumMembers() is called for the first time, * until then, default value set. */ $this->num_members = -1; if(TRACK_VISITORS){ /* Calculate number of users at site */ $this->calcNumActiveUsers(); /* Calculate number of guests at site */ $this->calcNumActiveGuests(); } } /** * confirmUserPass - Checks whether or not the given * username is in the database, if so it checks if the * given password is the same password in the database * for that user. If the user doesn't exist or if the * passwords don't match up, it returns an error code * (1 or 2). On success it returns 0. */ function confirmUserPass($username, $password){ /* Add slashes if necessary (for query) */ if(!get_magic_quotes_gpc()) { $username = addslashes($username); } /* Verify that user is in database */ $q = "SELECT password FROM ".TBL_USERS." WHERE username = '$username'"; $result = mysql_query($q, $this->connection); if(!$result || (mysql_numrows($result) < 1)){ return 1; //Indicates username failure } /* Retrieve password from result, strip slashes */ $dbarray = mysql_fetch_array($result); $dbarray['password'] = stripslashes($dbarray['password']); $password = stripslashes($password); /* Validate that password is correct */ if($password == $dbarray['password']){ return 0; //Success! Username and password confirmed } else{ return 2; //Indicates password failure } } /** * confirmUserID - Checks whether or not the given * username is in the database, if so it checks if the * given userid is the same userid in the database * for that user. If the user doesn't exist or if the * userids don't match up, it returns an error code * (1 or 2). On success it returns 0. */ function confirmUserID($username, $userid){ /* Add slashes if necessary (for query) */ if(!get_magic_quotes_gpc()) { $username = addslashes($username); } /* Verify that user is in database */ $q = "SELECT userid FROM ".TBL_USERS." WHERE username = '$username'"; $result = mysql_query($q, $this->connection); if(!$result || (mysql_numrows($result) < 1)){ return 1; //Indicates username failure } /* Retrieve userid from result, strip slashes */ $dbarray = mysql_fetch_array($result); $dbarray['userid'] = stripslashes($dbarray['userid']); $userid = stripslashes($userid); /* Validate that userid is correct */ if($userid == $dbarray['userid']){ return 0; //Success! Username and userid confirmed } else{ return 2; //Indicates userid invalid } } /** * usernameTaken - Returns true if the username has * been taken by another user, false otherwise. */ function usernameTaken($username){ if(!get_magic_quotes_gpc()){ $username = addslashes($username); } $q = "SELECT username FROM ".TBL_USERS." WHERE username = '$username'"; $result = mysql_query($q, $this->connection); return (mysql_numrows($result) > 0); } /** * usernameBanned - Returns true if the username has * been banned by the administrator. */ function usernameBanned($username){ if(!get_magic_quotes_gpc()){ $username = addslashes($username); } $q = "SELECT username FROM ".TBL_BANNED_USERS." WHERE username = '$username'"; $result = mysql_query($q, $this->connection); return (mysql_numrows($result) > 0); } /** * addNewUser - Inserts the given (username, password, email) * info into the database. Appropriate user level is set. * Returns true on success, false otherwise. */ function addNewUser($username, $password, $email){ $time = time(); /* If admin sign up, give admin user level */ if(strcasecmp($username, ADMIN_NAME) == 0){ $ulevel = ADMIN_LEVEL; }else{ $ulevel = USER_LEVEL; } $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password', '0', $ulevel, '$email', $time)"; return mysql_query($q, $this->connection); } /** * updateUserField - Updates a field, specified by the field * parameter, in the user's row of the database. */ function updateUserField($username, $field, $value){ $q = "UPDATE ".TBL_USERS." SET ".$field." = '$value' WHERE username = '$username'"; return mysql_query($q, $this->connection); } /** * getUserInfo - Returns the result array from a mysql * query asking for all information stored regarding * the given username. If query fails, NULL is returned. */ function getUserInfo($username){ $q = "SELECT * FROM ".TBL_USERS." WHERE username = '$username'"; $result = mysql_query($q, $this->connection); /* Error occurred, return given name by default */ if(!$result || (mysql_numrows($result) < 1)){ return NULL; } /* Return result array */ $dbarray = mysql_fetch_array($result); return $dbarray; } /** * getNumMembers - Returns the number of signed-up users * of the website, banned members not included. The first * time the function is called on page load, the database * is queried, on subsequent calls, the stored result * is returned. This is to improve efficiency, effectively * not querying the database when no call is made. */ function getNumMembers(){ if($this->num_members < 0){ $q = "SELECT * FROM ".TBL_USERS; $result = mysql_query($q, $this->connection); $this->num_members = mysql_numrows($result); } return $this->num_members; } /** * calcNumActiveUsers - Finds out how many active users * are viewing site and sets class variable accordingly. */ function calcNumActiveUsers(){ /* Calculate number of users at site */ $q = "SELECT * FROM ".TBL_ACTIVE_USERS; $result = mysql_query($q, $this->connection); $this->num_active_users = mysql_numrows($result); } /** * calcNumActiveGuests - Finds out how many active guests * are viewing site and sets class variable accordingly. */ function calcNumActiveGuests(){ /* Calculate number of guests at site */ $q = "SELECT * FROM ".TBL_ACTIVE_GUESTS; $result = mysql_query($q, $this->connection); $this->num_active_guests = mysql_numrows($result); } /** * addActiveUser - Updates username's last active timestamp * in the database, and also adds him to the table of * active users, or updates timestamp if already there. */ function addActiveUser($username, $time){ $q = "UPDATE ".TBL_USERS." SET timestamp = '$time' WHERE username = '$username'"; mysql_query($q, $this->connection); if(!TRACK_VISITORS) return; $q = "REPLACE INTO ".TBL_ACTIVE_USERS." VALUES ('$username', '$time')"; mysql_query($q, $this->connection); $this->calcNumActiveUsers(); } /* addActiveGuest - Adds guest to active guests table */ function addActiveGuest($ip, $time){ if(!TRACK_VISITORS) return; $q = "REPLACE INTO ".TBL_ACTIVE_GUESTS." VALUES ('$ip', '$time')"; mysql_query($q, $this->connection); $this->calcNumActiveGuests(); } /* These functions are self explanatory, no need for comments */ /* removeActiveUser */ function removeActiveUser($username){ if(!TRACK_VISITORS) return; $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE username = '$username'"; mysql_query($q, $this->connection); $this->calcNumActiveUsers(); } /* removeActiveGuest */ function removeActiveGuest($ip){ if(!TRACK_VISITORS) return; $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE ip = '$ip'"; mysql_query($q, $this->connection); $this->calcNumActiveGuests(); } /* removeInactiveUsers */ function removeInactiveUsers(){ if(!TRACK_VISITORS) return; $timeout = time()-USER_TIMEOUT*60; $q = "DELETE FROM ".TBL_ACTIVE_USERS." WHERE timestamp < $timeout"; mysql_query($q, $this->connection); $this->calcNumActiveUsers(); } /* removeInactiveGuests */ function removeInactiveGuests(){ if(!TRACK_VISITORS) return; $timeout = time()-GUEST_TIMEOUT*60; $q = "DELETE FROM ".TBL_ACTIVE_GUESTS." WHERE timestamp < $timeout"; mysql_query($q, $this->connection); $this->calcNumActiveGuests(); } /** * query - Performs the given query on the database and * returns the result, which may be false, true or a * resource identifier. */ function query($query){ return mysql_query($query, $this->connection); } }; /* Create database connection */ $database = new MySQLDB; ?> Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-822202 Share on other sites More sharing options...
fenway Posted April 30, 2009 Share Posted April 30, 2009 Define "doesn't work" -- any all that code doesn't help. Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-822584 Share on other sites More sharing options...
revraz Posted April 30, 2009 Share Posted April 30, 2009 You do need to add your balance variable here: $q = "INSERT INTO ".TBL_USERS." VALUES ('$username', '$password', '0', $ulevel, '$email', $time, '$balance')"; But you also have to define and set $balance before you can use it. Also by adding this one more column, you'll probably open a new can of worms on other functions that are not expecting 1 more column. Quote Link to comment https://forums.phpfreaks.com/topic/155226-when-i-add-a-new-field-my-login-script-doesnt-work-anymore/#findComment-822612 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.