php register error need help

Discussion in 'PHP' started by imsoflyoh, May 20, 2009.

  1. #1
    My site is getting a error i say i want to register the error is

    Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/koolaid1/public_html/register.php on line 16

    it shows me that when i try to register on the page

    here is the code

    
    <?
    session_start(); 
    include("database.php");
    
    /**
     * Returns true if the username has been taken
     * by another user, false otherwise.
     */
    function usernameTaken($username){
       global $conn;
       if(!get_magic_quotes_gpc()){
          $username = addslashes($username);
       }
       $q = "select username from users where username = '$username'";
       $result = mysql_query($q,$conn);
       return (mysql_numrows($result) > 0);
    }
    
    /**
     * Inserts the given (username, password) pair
     * into the database. Returns true on success,
     * false otherwise.
     */
    function addNewUser($username, $password){
       global $conn;
       $q = "INSERT INTO users VALUES ('$username', '$password')";
       return mysql_query($q,$conn);
    }
    
    /**
     * Displays the appropriate message to the user
     * after the registration attempt. It displays a 
     * success or failure status depending on a
     * session variable set during registration.
     */
    function displayStatus(){
       $uname = $_SESSION['reguname'];
       if($_SESSION['regresult']){
    ?>
    
    <h1>Registered!</h1>
    <p>Thank you <b><? echo $uname; ?></b>, your information has been added to the database, you may now <a href="main.php" title="Login">log in</a>.</p>
    
    <?
       }
       else{
    ?>
    
    <h1>Registration Failed</h1>
    <p>We're sorry, but an error has occurred and your registration for the username <b><? echo $uname; ?></b>, could not be completed.<br>
    Please try again at a later time.</p>
    
    <?
       }
       unset($_SESSION['reguname']);
       unset($_SESSION['registered']);
       unset($_SESSION['regresult']);
    }
    
    if(isset($_SESSION['registered'])){
    /**
     * This is the page that will be displayed after the
     * registration has been attempted.
     */
    ?>
    
    <html>
    <title>Registration Page</title>
    <body>
    
    <? displayStatus(); ?>
    
    </body>
    </html>
    
    <?
       return;
    }
    
    /**
     * Determines whether or not to show to sign-up form
     * based on whether the form has been submitted, if it
     * has, check the database for consistency and create
     * the new account.
     */
    if(isset($_POST['subjoin'])){
       /* Make sure all fields were entered */
       if(!$_POST['user'] || !$_POST['pass']){
          die('You didn\'t fill in a required field.');
       }
    
       /* Spruce up username, check length */
       $_POST['user'] = trim($_POST['user']);
       if(strlen($_POST['user']) > 30){
          die("Sorry, the username is longer than 30 characters, please shorten it.");
       }
    
       /* Check if username is already in use */
       if(usernameTaken($_POST['user'])){
          $use = $_POST['user'];
          die("Sorry, the username: <strong>$use</strong> is already taken, please pick another one.");
       }
    
       /* Add the new account to the database */
       $md5pass = md5($_POST['pass']);
       $_SESSION['reguname'] = $_POST['user'];
       $_SESSION['regresult'] = addNewUser($_POST['user'], $md5pass);
       $_SESSION['registered'] = true;
       echo "<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">";
       return;
    }
    else{
    /**
     * This is the page with the sign-up form, the names
     * of the input fields are important and should not
     * be changed.
     */
    ?>
    
    <html>
    <title>Registration Page</title>
    <body>
    <h1>Register</h1>
    <form action="<? echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post">
    <table align="left" border="0" cellspacing="0" cellpadding="3">
    <tr><td>Username:</td><td><input type="text" name="user" maxlength="30"></td></tr>
    <tr><td>Password:</td><td><input type="password" name="pass" maxlength="30"></td></tr>
    <tr><td colspan="2" align="right"><input type="submit" name="subjoin" value="Join!"></td></tr>
    </table>
    </form>
    </body>
    </html>
    
    
    <?
    }
    ?>
    PHP:
     
    imsoflyoh, May 20, 2009 IP
  2. imsoflyoh

    imsoflyoh Guest

    Messages:
    92
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
  3. NatalicWolf

    NatalicWolf Peon

    Messages:
    262
    Likes Received:
    14
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Message me on AIM please. I am available right now too.
     
    NatalicWolf, May 20, 2009 IP
    imsoflyoh likes this.
  4. ezprint2008

    ezprint2008 Well-Known Member

    Messages:
    611
    Likes Received:
    15
    Best Answers:
    2
    Trophy Points:
    140
    Digital Goods:
    1
    #4
    if you call a variable OUTSIDE of a function ..that was created INSIDE of a function. it wont know it exists.

    unless you use the superglobal on the page. remember?

    OR make the variable outside BOTH functions.. so that both functions can access it.
     
    ezprint2008, May 21, 2009 IP
  5. SHOwnsYou

    SHOwnsYou Peon

    Messages:
    209
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    0
    #5
    Use mysql_num_rows($result) instead of mysql_numrows($result)
     
    SHOwnsYou, May 21, 2009 IP