Jump to content

I think its an SQL problem. Please Help Again


the_infamous_don

Recommended Posts

Hello. Can someone please help with this code? I am trying to first create a new user, register them and then for them to login again. The code seems right in my eyes, but it does not allow me to register a new user. Help? Let me just add that I believe the error points to line 21, which is this line:

 

return (mysql_numrows($result) > 0);

 

But, I dont see the problem. It says that this line is not a valid SQL statement. Heres the code:

 

 

?php
session_start(); 
$location = "ftemysql";$accountname = "ku12881";
           $pword = "carstairs";$database = "ku12881";
           $conn=mysql_connect("$location","$accountname","$pword");
           mysql_select_db($database,$conn);
           mysql_query("CREATE TABLE users
         (username VARCHAR(10),password VARCHAR(10))");

/**
* 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 <? echo $uname; ?>, your information has been added to the database, you may now <a href="main.php" title="Login">log in[/url].</p>

<?
  }
  else{
?>

<h1>Registration Failed</h1>
<p>We're sorry, but an error has occurred and your registration for the username <? echo $uname; ?>, could not be completed.

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>


<?
}
?>

change

  $q = "select username from users where username = '$username'";

  $result = mysql_query($q,$conn);

 

to

   $q = "select username from users where username = '$username'";
   $result = mysql_query($q,$conn) or die(mysql_error());

 

and see if it gives an error message

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.