Jump to content

Created a registration page, validation gone wrong!


Tuscanbot

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>

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';

 

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.