Jump to content

Recommended Posts

Hey Guys,

Im new on here so bear with me. I am currently on about day 5 (and yes I mean full days almost) trying to get a php login/register/logout script to work. I know thats pretty sad but its where I'm at lol. Anyways I have seen numerous tutorials online and none of them seem to be working. Long story short does anyone have a tutorial or resource they know of that actually works. If anyone has a template of a script for what I am trying to accomplish that would be great as well. Im not by any means looking for an easy way out but Ive started from scratch about 4 or 5 times now so maybe starting with a script that any of you could provide may help you help me work through this issue ? Hahah anyways guys any help at all would be greatly appreciated.

 

I know your going to probably ask me to see the script I'm using but as I say I have used about 4 now and I dont really know which one to post. Id rather use one that more educated people such as yourselves can recomend and work through that as I'm sure in trying to resolve this I've butchered the scripts to shreds anyways. If nobody has a good script to use then I will post it, Ill do anything to get this to work lol. Im going crazy!

-SB

If you have had no success with any script, it would be better to pick the one you feel most comfortable with and troubleshoot why it is not working. You may have some fundamental issue on your server/development system that would prevent every suggested script from working.

 

Short answer: In programming, it is aways better to troubleshoot and find the root cause of a problem then to waste a lot of time just trying things and throwing away code simply because it doesn't work.

 

Pick the script you understand the best and post it along with a statement of the symptoms and any errors you got when you tried it.

<?
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="32"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="subjoin" value="Join!"></td></tr>
</table>
</form>
</body>
</html>


<?
}
?>

 

MOD EDIT: code tags added.

yea i do have database.php in place :

 

<?

 

/**

* Connect to the mysql database.

*/

$conn = mysql_connect("localhost", "mysqllogin", "mysqlpassword") or die(mysql_error());

mysql_select_db('databasename', $conn) or die(mysql_error());

 

?>

 

Here it is for your perusal if that helps at all.

It basically just keeps coming up saying Register Failed.

I think I going to see that in my sleep....

hey i tried putting those two lines at the top of the register.php file and now when I click register on my index.php file in the browser (which links to my register page). The register page wont load with that at the top. Anything else? I seem to be the only person online who can't figure out a login/register system.

Oh wait!

I just looked where the url usually is in the browser and it says that there is an undefined variable.

Here is the direct quote:

 

notice: Undefined variable: HTTP_SERVER_VARS in /var/www/register.php on line 126

 

Thanks guys for your help so far.

 

hey i tried putting those two lines at the top of the register.php file and now when I click register on my index.php file in the browser (which links to my register page). The register page wont load with that at the top. Anything else? I seem to be the only person online who can't figure out a login/register system.

Oh wait!

I just looked where the url usually is in the browser and it says that there is an undefined variable.

Here is the direct quote:

 

notice: Undefined variable: HTTP_SERVER_VARS in /var/www/register.php on line 126

 

Thanks guys for your help so far.

 

Change the next line:

<form action="<? echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post">

To:

<form action="" method="post">

 

Ok so let me get this straight Edwin. I take out the first line u posted and replace it with the second line you posted? Or do I put the second As well as the first? I assume 1 or the other but Im just asking to be on the safe side.

Thank you

-SB

Sorry Pikachu2000 thats my bad ill use the

 brackets next time I post one like I said im new to the forum. But it has been duely noted and wont happen again. 

Ok so I've switched those two lines and wont be able to test if its working for another 4 hours yet (Im at work the suspense is killing me) when I get home so I can connect to my server (as Im hosting this on a home server for now and see if it works. 

I'm sure you guys will be hearing from me shortly and I'll let you know if that solved my issue or not. Once again I cant express how thankful I am for everyones help so far. 

-SB

Here we are

 

 
<?
ini_set('display_errors',1);	error_reporting(E_ALL | E_STRICT);//this was added after the fact so that i can see what errors
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="" 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="32"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="subjoin" value="Join!"></td></tr>
</table>
</form>
</body>
</html>

<?
}
?>

Even though it says registration failed, you probably still have the registered username and password in the database.  Try changing the addNewUser() function to:

function addNewUser($username, $password){
   global $conn;
   $q = "INSERT INTO users VALUES ('$username', '$password')";
    mysql_query($q,$conn);
return mysql_affected_rows();
}

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.