Jump to content

Created a registration page, validation gone wrong!


Go to solution Solved by cyberRobot,

Recommended Posts

Hi guys,

I am trying to create registration form and record the registration to the database, however, I have problem with the part for the 'member name' validation. 

I try to register myself properly and there shouldn't be an error however it say "Member name must contain only letters, space and hypen". 
It shouldn't as i put the member name properly, maybe I did something wrong with the validation and especially the regex?

My apology for my bad English.

<?phpsession_start();
require_once('sqlconnect.inc.php');


session_start();
if (isset($_POST["Register"]))
{
$email = $_POST['email'];
$memberName = $_POST['membername'];
$passw = $_POST['password'];
$conPassw = $_POST['conpassword'];


if($email=='')
{
echo "<p>Please enter the Email address</p>";
echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
exit();
}


if($memberName=='')
{
echo "<p>Please enter the Member Name</p>";
echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
exit();
}


if($passw=='')
{
echo "<p>Please enter Password</p>";
echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
exit();
}


if($conPassw=='')
{
echo "<p>Please enter Confirm Password</p>";
echo "<a href=\"signup.php\">Back to Registration Page!</a>"; 
exit();
}
else {


if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo "Invalid email address";
}
else{


$_SESSION['name'] = $_POST['membername'];
$pattern1 = '/^[a-z-]+$/';
if (preg_match($pattern1, $memberName))
{
echo "<p>Member name must contain only letters, space and hypen</p>";
}
else{


$pattern2 = '^[a-zA-Z0-9]+$';
if (preg_match($pattern2, $passw))
{
echo "<p>Password must only contain numbers and letters!</p>";
}
else{


if($passw<>$conPassw)
{
echo "<p>Passwords does not match!</p>";
$passw="";
$conPassw="";
}
else{


$conn = @mysqli_connect($host, $user, $pswd, $dbnm);
if (!$conn)
die ("<p>Couldn't connect to the server!<p>");
$SelectDatabase = @mysqli_select_db($conn,"s7259476_db")
or die("<p>The database is not available.</p>");


$insertDatabase = "INSERT INTO team VALUES('NULL','$email','$password','$memberName',CURDATE(),0)";
$queryResult = @mysqli_query($conn, $insertDatabase)
or die ("<p>Email already exists.Please enter another email id</p>");
echo"<p>Data entered into friends table successfully</p>";
echo "<p>Welcome"."   ".$_SESSION['name']."</p>";
}
}
}
}
}
}




?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/chtml-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="Web Programming :: Assignment 2" />
<meta name="Keywords" content="Web, programming" />
<title>Register Page</title>
</head>


<body>


<form id='register' action='signup.php' method='POST'>
<fieldset >
<legend><h1>My Team System Registration Page</h1></legend>
<?php $email = isset($_POST['email']) ? filter_var($_POST['email'], FILTER_SANITIZE_STRING) : ''; ?>
<?php $memberName = isset($_POST['membername']) ? filter_var($_POST['membername'], FILTER_SANITIZE_STRING) : ''; ?> 
<div class="elements">
<label for='email' >Email:</label>
<input type='text' name='email' id='email' maxlength="50"  value="<?php echo $email; ?>" />
</div>
<br />
<div class="elements">
<label for='membername' >Member Name:</label>
<input type='text' name='membername' id='membername' maxlength="50" value="<?php echo $memberName; ?>" />
</div>
<br />
<div class="elements">
<label for='password' >Password:</label>
<input type='password' name='password' id='password' maxlength="50" />
</div>
<br />
<div class="elements">
<label for='conpassword' >Confirm Password:</label>
<input type='password' name='conpassword' id='conpassword' maxlength="50" />
</div>
<br />
<div class="submit">
<input type='submit' name='Register' value='Register' />
<input type='reset' name='Submit' value='Clear' />
<br />
<div class="elements">
<a href="index.php">Home</a> 
</fieldset>
</form>


</body>
</html>
  • Solution

Your regular expression only tests if the name contains lower-case letters (a-z) and hyphens. Add "\s" for the name to include spaces. Your code also has the error message appear when the pattern is valid (aka: when you have a valid name). You'll want to add "!" (not) before the preg_match():

$pattern1 = '/^[a-z-\s]+$/';
if(!preg_match($pattern1, $memberName)) {
     echo "<p>Member name must contain only letters, space and hypen</p>";
} else {
     echo '<p>Good name!</p>';
}
 
Also, note that you can make the regular expression case insensitive by adding an "i" after the pattern delimiter:
$pattern1 = '/^[a-z-\s]+$/i';

 

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.