Tuscanbot Posted October 30, 2013 Share Posted October 30, 2013 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> Quote Link to comment Share on other sites More sharing options...
Solution cyberRobot Posted October 30, 2013 Solution Share Posted October 30, 2013 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'; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.