Jump to content

Recommended Posts

Hi, everyone,

 

I just can't see to track down my error here.  The problem is that $register->validate() keeps returning false, and I can't find any problems with it anywhere.  I've been staring at it all day, so maybe a fresh pair of eyes will be able to spot something.

 

So, here's the way the script works.  Users enter their information on the registration form, the form $_POSTs, and the data is validated by the validate function.  It is *suppose* to return true if the information is validated.  Here is the validate() function:

 

function validate() {
        if (
        (ctype_alnum($_POST[$username]) && !strlen($_POST[$username]) <= 4 && !strlen($_POST[$username] >= 13))
        &&
        (ctype_alpha($_POST[$userchar]) && !strlen($_POST[$userchar]) <= 2 && !strlen($_POST[$userchar]) >= 13)
        &&
        (filter_var($_POST[$useremail], FILTER_VALIDATE_EMAIL))
        &&
        (ctype_alnum($_POST[$userpass]) && !strlen($_POST[$userpass]) <= 4 && !strlen($_POST[$userpass] >= 33))
        &&
        (ctype_alnum($_POST[$userpass2]) && !strlen($_POST[$userpass2]) <= 4 && !strlen($_POST[$userpass2] >= 33))
        &&
        ($_POST[$userpass] == $_POST[$userpass2])
        &&
        ($_POST[$termsofservice] == 1)
        &&
        ($_POST['send'])) {
            return true;
        }
        else { return false; }

 

I did a print_r($_POST) to make sure the $variables I was using instead of "keys" on $_POST was working.  (I use $_POST[$key] instead of $_POST["key"], and the array returns correctly.)

 

This is the form that users sign up to:

<form method="post" id="customForm" action="">
<label for="user">Username</label>
<input id="username" name="username" type="text" />
<span id="usernameInfo">Enter your username (for logging in).</span>
<label for="name">Character Name</label>
<input id="charname" name="charname" type="text" />
<span id="nameInfo">Enter your character's first name.</span>
<label for="useremail">Valid E-mail Address</label>
<input id="useremail" name="useremail" type="text" />
<span id="emailInfo">Valid E-mail please, you will need it to log in!</span>
<label for="userpass">Password</label>
<input id="userpass" name="userpass" type="password" />
<span id="userpass1Info">At least 5 characters: letters and/or numbers</span>
<label for="userpass2">Re-type password to confirm.</label>
<input id="userpass2" name="userpass2" type="password" />
<span id="pass2Info">Re-type password to confirm.</span><br /><br />
</center><label for="message">Do you Agree to the Terms of Service?  (View the Terms of Service here)</label>
<input type="checkbox" id="termsofservice" name="termsofservice" value="1" /> <strong>I accept the terms of service!</strong><br /> <br />
<center><input id="send" name="send" type="submit" value="Register" /></center>

 

Any help is appreciated greatly.

  Your code is riddled with errors, look at these lines for example:

!strlen($_POST[$username] >= 13))

!strlen($_POST[$userchar]) >= 13)

 

You're forgetting to close brackets for one.

 

$_POST[$username] <-- As mentioned $username has to be passed the the function. $username is NULL if it is not passed or defined wtihin.

 

function validate($username, $userchar, $userpass, $userpass2, $termsofservice) { ...

Thanks a bunch.  It's amazing what a good night's sleep will do for you, combined with a fresh set of eyes to point out mistakes.

 

Here's the fixed code, finally returning true:  (from function validate() )

 

    function validate() {
        global $username, $userchar, $useremail, $userpass, $userpass2, $termsofservice;
        if (
        (ctype_alnum($_POST[$username]) && strlen($_POST[$username]) >= 5 && strlen($_POST[$username]) <= 12)
        &&
        (ctype_alpha($_POST[$userchar]) && strlen($_POST[$userchar]) >= 3 && strlen($_POST[$userchar]) <= 12)
        &&
        (filter_var($_POST[$useremail], FILTER_VALIDATE_EMAIL))
        &&
        (ctype_alnum($_POST[$userpass]) && strlen($_POST[$userpass]) >= 5 && strlen($_POST[$userpass]) <= 32)
        &&
        (ctype_alnum($_POST[$userpass2]) && strlen($_POST[$userpass2]) >= 5 && strlen($_POST[$userpass2]) <= 32)
        &&
        ($_POST[$userpass] == $_POST[$userpass2])
        &&
        ($_POST[$termsofservice] == 1)
        ) {
            return true;
        }
        else { return false; }

 

Can't believe I forgot about global.  Sheesh.  And I attribute the strange ( )'s to being extremely tired by getting to this part of the code.

 

Thanks for all the help.  <3 phpfreaks

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.