Reputation: 39
I have this code (shown below) and the variable $first_name=$_POST['first_name']; does not seem to work. I have username, password and title working. Is it something to do with the use of the underscore? I have checked that it matches with the database. When the user creates an account that line where the first_name is stored throws up an error and does not display the name entered in the database. Any ideas?
<?php
/* This code will make a connection with database */
$con=mysql_connect("localhost","","");
/* Now, we select the database */
mysql_select_db("");
/* Now we will store the values submitted by form in variable */
$username=$_POST['username'];
$pass=$_POST['password'];
$title=$_POST['title'];
$first_name=$_POST['first_name'];
/* we are now encrypting password while using md5() function */
$password=md5($pass);
$confirm_password=$_POST['confirm_password'];
/* Now we will check if username is already in use or not */
$queryuser=mysql_query("SELECT * FROM Customer WHERE username='$username' ");
$checkuser=mysql_num_rows($queryuser);
if($checkuser != 0)
{ echo "Sorry, ".$username." is already been taken."; }
else {
/* now we will check if password and confirm password matched */
if($pass != $confirm_password)
{ echo "Password and confirm password fields were not matched"; }
else {
/* Now we will write a query to insert user details into database */
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')");
if($insert_user)
{ echo "Registration Succesfull"; }
else
{ echo "error in registration".mysql_error(); }
/* closing the if else statements */
}}
mysql_close($con);
?>
Thanks!
HTML form
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<title>
</title>
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="my.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
</script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js">
</script>
<script src="my.js">
</script>
<!-- User-generated css -->
<style>
</style>
<!-- User-generated js -->
<script>
try {
$(function() {
});
} catch (error) {
console.error("Your javascript has an error: " + error);
}
</script>
</head>
<body>
<!-- Home -->
<div data-role="page" id="page1">
<div data-theme="a" data-role="header">
<a data-role="button" data-theme="d" href="Login.html" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left">
Back
</a>
<a data-role="button" href="index.html" data-icon="home" data-iconpos="right" data-theme="d"class="ui-btn-right">
Home
</a>
<h3>
Registration
</h3>
</div>
<div data-role="content">
<h4>
Enter your details below to register:
</h4>
<form method="post" action="Login.php">
<table border="0">
<tr><td>Title: </td><td><input type="text" name="title" /></td></tr>
<tr><td>First Name: </td><td><input type="text" name="name" /></td></tr>
<tr><td>Username: </td><td><input type="text" name="username" /></td></tr>
<tr><td>Password: </td><td><input type="password" name="password" /></td></tr>
<tr><td>Confirm Password: </td><td><input type="password" name="confirm_password" /></td></tr>
<tr><td></td><td><input type="submit" value="submit" /></td></tr>
</table>
</form>
<div data-role="content">
<h4>
Please ensure your username and password are kept secure.
</h4>
<br />
</div>
</div>
</body>
</html>
Upvotes: 1
Views: 2311
Reputation: 6335
The issue is that your form attribute for input text for first name
is name
not first_name
. So you should change
$first_name=$_POST['first_name'];
to
$first_name=$_POST['name'];
or change your name attribute to first_name
Also do proper escaping for all fields before inserting
<?php
/* This code will make a connection with database */
$con=mysql_connect("localhost","","");
/* Now, we select the database */
mysql_select_db("");
/* Now we will store the values submitted by form in variable */
$username= mysql_real_escape_string($_POST['username']);
$pass= mysql_real_escape_string($_POST['password']);
$title= mysql_real_escape_string($_POST['title']);
$first_name= mysql_real_escape_string($_POST['name']);
/* we are now encrypting password while using md5() function */
$password= md5($pass);
$confirm_password= mysql_real_escape_string($_POST['confirm_password']);
/* Now we will check if username is already in use or not */
$queryuser=mysql_query("SELECT * FROM Customer WHERE username='$username' ");
$checkuser=mysql_num_rows($queryuser);
if($checkuser != 0)
{ echo "Sorry, ".$username." is already been taken."; }
else {
/* now we will check if password and confirm password matched */
if($pass != $confirm_password)
{ echo "Password and confirm password fields were not matched"; }
else {
/* Now we will write a query to insert user details into database */
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')");
if($insert_user)
{ echo "Registration Succesfull"; }
else
{ echo "error in registration".mysql_error(); }
/* closing the if else statements */
}}
mysql_close($con);
?>
Upvotes: 3
Reputation: 2670
Change this:
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('$username', '$password', '$title', '$first_name')");
To this:
$insert_user=mysql_query("INSERT INTO Customer (username, password, title, first_name) VALUES ('".$username."', '".$password."', '".$title."', '".$first_name."')");
UPDATE
Please check that <input type="text" name="first_name">
has name="first_name"
Upvotes: 0
Reputation: 6647
Well, it looks like your form doesn't contain a first_name
item, but name
. Change it back to first_name
Upvotes: 0
Reputation: 6023
alter it to this:
$first_name = mysql_real_escape_string($_POST['first_name']);
you are currently saving without any sanitization or escaping.
Upvotes: 0