New registration fields

by Alast
6 replies
Hi guys,

I followed a tutorial on YouTube regarding registration, however, I have decided it's necessary to include more fields. More specifically, the birth date, and gender. Given they are different input types opposed to the standard username/password etc fields, I'm having trouble with how I can go about doing this. When a member registers, I want it to be required for them to insert that information into the form, and I want it to output on the database as Male or Female, and date as "21/4/1993" for example. I did manage to get the Male and Female working, but whichever gender you went with, it would always return as "on", and for some unknown reason, even though I stated that I wanted it to be a required field, it would still allow you to register without it.

As you have probably guess by now, I've only been coding for a week, so please go easy on me.

Register Form (include)

registerform.php
Code:
<form action="#" method="post" id="post">
  <fieldset>
  <div class="registeronform"><center>Register</center></div>
  
<center>
	<table border="0">
  <tr>
	<td><label for="register_email">Email*:</label></td>
	<td><input type="text" name="email" /><br></td>
  <tr> 
	<td><label for="first_name">First Name*:</label></td>
	<td><input type="text" name="first_name" /></td>
  <tr> 
	<td><label for="last_name">Last Name:</label></td>
	<td><input type="text" name="last_name" /></td>
  <tr>
	<td><label for="user_name">Username*:</label></td>
	<td><input type="text" name="username" /></td>
  <tr>
	<td><label for="register_password">Password*:</label></td>
	<td><input type="password" name="password" /><br></td>
  <tr>
	<td><label for="register_password_confirmation">Password Confirmation*:</label></td>
    <td><input type="password" name="password_again" /></td>
  <tr>
	<td><label for="gender">Gender*:</label></td>
    <td>Male: <input type="radio" name="male" /> Female: <input type="radio" name="female" /></td>
   <tr>
	<td><label for="birth">Birth*:</label></td>
    <td><select name="DateOfBirth_Month">
	<option> - Month - </option>
	<option value="January">January</option>
	<option value="Febuary">Febuary</option>
	<option value="March">March</option>
	<option value="April">April</option>
	<option value="May">May</option>
	<option value="June">June</option>
	<option value="July">July</option>
	<option value="August">August</option>
	<option value="September">September</option>
	<option value="October">October</option>
	<option value="November">November</option>
	<option value="December">December</option>
</select>

<select name="DateOfBirth_Day">
	<option> - Day - </option>
	<option value="1">1</option>
	<option value="2">2</option>
	<option value="3">3</option>
	<option value="4">4</option>
	<option value="5">5</option>
	<option value="6">6</option>
	<option value="7">7</option>
	<option value="8">8</option>
	<option value="9">9</option>
	<option value="10">10</option>
	<option value="11">11</option>
	<option value="12">12</option>
	<option value="13">13</option>
	<option value="14">14</option>
	<option value="15">15</option>
	<option value="16">16</option>
	<option value="17">17</option>
	<option value="18">18</option>
	<option value="19">19</option>
	<option value="20">20</option>
	<option value="21">21</option>
	<option value="22">22</option>
	<option value="23">23</option>
	<option value="24">24</option>
	<option value="25">25</option>
	<option value="26">26</option>
	<option value="27">27</option>
	<option value="28">28</option>
	<option value="29">29</option>
	<option value="30">30</option>
	<option value="31">31</option>
</select>

<select name="DateOfBirth_Year">
	<option> - Year - </option>
	<option value="2004">2004</option>
	<option value="2003">2003</option>
	<option value="2002">2002</option>
	<option value="2001">2001</option>
	<option value="2000">2000</option>
	<option value="1999">1999</option>
	<option value="1998">1998</option>
	<option value="1997">1997</option>
	<option value="1996">1996</option>
	<option value="1995">1995</option>
	<option value="1994">1994</option>
	<option value="1993">1993</option>
	<option value="1992">1992</option>
	<option value="1991">1991</option>
	<option value="1990">1990</option>
	<option value="1989">1989</option>
	<option value="1988">1988</option>
	<option value="1987">1987</option>
	<option value="1986">1986</option>
	<option value="1985">1985</option>
	<option value="1984">1984</option>
	<option value="1983">1983</option>
	<option value="1982">1982</option>
	<option value="1981">1981</option>
	<option value="1980">1980</option>
	<option value="1979">1979</option>
	<option value="1978">1978</option>
	<option value="1977">1977</option>
	<option value="1976">1976</option>
	<option value="1975">1975</option>
	<option value="1974">1974</option>
	<option value="1973">1973</option>
	<option value="1972">1972</option>
	<option value="1971">1971</option>
	<option value="1970">1970</option>
	<option value="1969">1969</option>
	<option value="1968">1968</option>
	<option value="1967">1967</option>
	<option value="1966">1966</option>
	<option value="1965">1965</option>
	<option value="1964">1964</option>
	<option value="1963">1963</option>
	<option value="1962">1962</option>
	<option value="1961">1961</option>
	<option value="1960">1960</option>
	<option value="1959">1959</option>
	<option value="1958">1958</option>
	<option value="1957">1957</option>
	<option value="1956">1956</option>
	<option value="1955">1955</option>
	<option value="1954">1954</option>
	<option value="1953">1953</option>
	<option value="1952">1952</option>
	<option value="1951">1951</option>
	<option value="1950">1950</option>
	<option value="1949">1949</option>
	<option value="1948">1948</option>
	<option value="1947">1947</option>
	<option value="1946">1946</option>
	<option value="1945">1945</option>
	<option value="1944">1944</option>
	<option value="1943">1943</option>
	<option value="1942">1942</option>
	<option value="1941">1941</option>
	<option value="1940">1940</option>
	<option value="1939">1939</option>
	<option value="1938">1938</option>
	<option value="1937">1937</option>
	<option value="1936">1936</option>
	<option value="1935">1935</option>
	<option value="1934">1934</option>
	<option value="1933">1933</option>
	<option value="1932">1932</option>
	<option value="1931">1931</option>
	<option value="1930">1930</option>
	<option value="1929">1929</option>
	<option value="1928">1928</option>
	<option value="1927">1927</option>
	<option value="1926">1926</option>
	<option value="1925">1925</option>
	<option value="1924">1924</option>
	<option value="1923">1923</option>
	<option value="1922">1922</option>
	<option value="1921">1921</option>
	<option value="1920">1920</option>
	<option value="1919">1919</option>
	<option value="1918">1918</option>
	<option value="1917">1917</option>
	<option value="1916">1916</option>
	<option value="1915">1915</option>
	<option value="1914">1914</option>
	<option value="1913">1913</option>
	<option value="1912">1912</option>
	<option value="1911">1911</option>
	<option value="1910">1910</option>
	<option value="1909">1909</option>
	<option value="1908">1908</option>
	<option value="1907">1907</option>
	<option value="1906">1906</option>
	<option value="1905">1905</option>
	<option value="1904">1904</option>
	<option value="1903">1903</option>
	<option value="1902">1902</option>
	<option value="1901">1901</option>
	<option value="1900">1900</option>
</select></td>
  <tr>
	</table>
    
    
    <input type="submit" value="Register" />
Registration
Code:
<?php 
	
	if (empty($_POST) === false) {
	$required_fields = array('email', 'first_name', 'last_name', 'username', 'password', 'password_again', 'gender', 'birth');
	foreach($_POST as $key=>$value) {
		if (empty($value) && in_array($key, $required_fields) === true) {
			$errors[] = 'Fields marked with an asterisk are required.';
			break 1;
		}
	}
	
	if (empty($errors) === true) {
		if (user_exists($_POST['username']) === true) {
			$errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already taken.';
		}
		if (preg_match("/\\s/", $_POST['username']) == true) {
			$errors[] = 'Your username must not contain spaces.';
		}
		if (strlen($_POST['password']) < 6) {
			$errors[] = 'Your password must be at least 6 characters';
		}
		if ($_POST['password'] !== $_POST['password_again']) {
			$errors[] = 'Your passwords do not match.';
		}
		if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){
			$errors[] = 'A valid email address is required';
		}
		if (email_exists($_POST['email']) === true) {
			$errors[] = 'Sorry, the email \'' . $_POST['email'] . '\' is already in use.';
		}
	}
}

include 'includes/registerform.php'
?>

<?php 
if (isset($_GET['success']) && empty($_GET['success'])) {
	echo '<ul><li>You\'ve been registered successfully.  Please check you email to activate your account.</li></ul>';
	} else {
		if (empty($_POST) === false && empty($errors) === true) {
		$register_data = array(
			'username' 		=> $_POST['username'],
			'password' 		=> $_POST['password'],
			'first_name' 	=> $_POST['first_name'],
			'last_name' 	=> $_POST['last_name'],
			'gender' 		=> $_POST['gender'],
			'birth' 		=> $_POST['birth'],
			'email' 		=> $_POST['email'],
			'email_code'	=> md5($_POST['username'] + microtime())
		);
		register_user($register_data);
		header('Location: ?success');
		exit();
		
	} else if (empty($errors) === false)	{
		echo output_errors($errors);
	}
}
?>

</center>
init.php

Code:
<?php
session_start ();
//error_reporting(0);

require 'database/connect.php';
require 'functions/general.php';
require 'functions/users.php';

if (logged_in() === true) {
	$session_user_id = $_SESSION['user_id'];
	$user_data = user_data($session_user_id, 'user_id', 'username', 'password', 'first_name', 'last_name', 'email', 'gender', 'birth');
	if (user_active($user_data['username']) === false) {
		session_destroy();
		header('Location: index.php');
		exit();
	}
}

$errors = array();
?>
Here is a picture of my database setup:

#fields #registration
  • Profile picture of the author Valdor Kiebach
    I may be wrong but dont you need to add the value='male' and value='female' to the radio buttons.

    As for the required fields I would use javascript or ajax to check.

    Form Validation using Ajax < JavaScript | The Art of Web
    {{ DiscussionBoard.errors[8379175].message }}
  • Profile picture of the author Alast
    I ended up getting help with the gender, but now I need the birth to work, which I'm not sure how to go around it whatsoever.
    {{ DiscussionBoard.errors[8379233].message }}
    • Profile picture of the author seasoned
      Originally Posted by Alast View Post

      I ended up getting help with the gender, but now I need the birth to work, which I'm not sure how to go around it whatsoever.
      For some reason, date was NEVER considered in the 1986 standard! Since all the databases started with that standard, they had no way to do it, and had to make up their own. One way for MYSQL is:

      STR_TO_DATE()

      Look it up HERE:

      MySQL :: MySQL 5.5 Reference Manual :: 12.7 Date and Time Functions

      BTW there are a TON of date formats. Some databases can have each date defined differently. Obviously, MYSQL has it by DATABASE INSTANCE. If you happen to enter the date in the RIGHT format, it will work transparently.

      ALSO be aware that mm/dd/yyyy(Standard american) and dd/mm/yyyy(Standard european) Usually look IDENTICAL, but AREN'T!

      Steve
      {{ DiscussionBoard.errors[8379450].message }}
  • Profile picture of the author Alast
    Just an update, I have completed it for now (obviously I'll need to update it, but it's not a priority as of now). I have gone with a drop down menu for D.O.B.
    {{ DiscussionBoard.errors[8379710].message }}
  • Profile picture of the author CrazyStyle
    Looks cool but why $_POST['username'] ? I recommend to add the mysql_real_escape() function
    {{ DiscussionBoard.errors[8380198].message }}
  • Profile picture of the author Alast
    I don't really know much about programming, but it works. lol
    {{ DiscussionBoard.errors[8381572].message }}

Trending Topics