Possible Duplicate:
PHP: “Notice: Undefined variable” and “Notice: Undefined index”
I am trying to do a registration form that registers a user in a database (MySQL).
The code is supposed to register:
The code, before saving to the table, checks whether the username or password already exists, and if they do it echoes an error message, and if not, it saves to the db.
However, on page load, I'm getting these errors:
Notice: Undefined index: Name in C:\xampp\htdocs\Task2\registration.php on line 216
Notice: Undefined index: Surname in C:\xampp\htdocs\Task2\registration.php on line 217
Notice: Undefined index: Username in C:\xampp\htdocs\Task2\registration.php on line 219
Notice: Undefined index: Email in C:\xampp\htdocs\Task2\registration.php on line 221
Notice: Undefined index: C_Email in C:\xampp\htdocs\Task2\registration.php on line 222
Notice: Undefined index: password in C:\xampp\htdocs\Task2\registration.php on line 224
Notice: Undefined index: c_password in C:\xampp\htdocs\Task2\registration.php on line 225
Notice: Undefined index: SecQ in C:\xampp\htdocs\Task2\registration.php on line 227
Notice: Undefined index: SecA in C:\xampp\htdocs\Task2\registration.php on line 228
Notice: Undefined variable: mysql_connect in C:\xampp\htdocs\Task2\registration.php on line 231
Fatal error: Function name must be a string in C:\xampp\htdocs\Task2\registration.php on line 231
This is the code:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Registration</title>
<style type="text/css" title="Amaya theme">
body {
font-size: 12pt;
font-family: Helvetica, Arial, sans-serif;
font-weight: normal;
font-style: normal;
color: black;
background-color: white;
line-height: 1.2em;
margin-left: 4em;
margin-right: 2em;
}
/* paragraphs */
p {
padding: 0;
margin-top: 1em;
margin-bottom: 1em;
text-align: left;
}
/* headings */
h1 {
font-size: 180%;
font-weight: bold;
font-style: normal;
font-variant: small-caps;
text-align: left;
padding: 0;
margin-top: 1.7em;
margin-bottom: 1.7em;
}
h2 {
font-size: 150%;
font-weight: bold;
font-style: normal;
padding: 0;
margin-top: 1.5em;
margin-bottom: 1.1em;
}
h3 {
font-size: 130%;
font-weight: bold;
font-style: normal;
padding: 0;
margin-top: 1.3em;
margin-bottom: 1.1em;
}
h4 {
font-size: 110%;
font-weight: bold;
font-style: normal;
padding: 0;
margin-top: 1.1em;
margin-bottom: 1.1em;
}
h5 {
font-size: 100%;
font-weight: bold;
font-style: italic;
padding: 0;
margin-top: 1em;
margin-bottom: 1em;
}
h6 {
font-size: 100%;
font-weight: normal;
font-style: italic;
padding: 0;
margin-top: 1em;
margin-bottom: 1em;
}
/* divisions */
div {
padding: 0;
margin-top: 0em;
margin-bottom: 0em;
}
/* lists */
ul, ol {
padding: 0 0 0 3em;
margin-top: 1em;
margin-bottom: 1em;
}
ul ul, ol ol, ul ol, ol ul {
margin-top: 1em;
margin-bottom: 1em;
}
li {
padding: 0;
margin-top: 1em;
margin-bottom: 1em;
text-align: left;
}
li p {
margin-top: 1em;
margin-bottom: 1em;
}
dl {
padding: 0;
margin-top: 1em;
margin-bottom: 1em;
margin-left: 1em;
}
dl dl {
margin-top: 0em;
margin-bottom: 0em;
}
dt {
padding: 0;
font-weight: bold;
margin-top: .3em;
margin-bottom: .3em;
}
dd {
padding: 0;
margin-top: .3em;
margin-left: 3em;
margin-bottom: .3em;
}
dl p {
margin-top: .3em;
margin-bottom: .3em;
}
/* inline */
strong {
font-weight: bold;
}
em {
font-style: italic;
}
code {
font-family: Courier New, Courier, monospace;
}
ins {
background-color: yellow;
text-decoration: underline;
}
del {
text-decoration: line-through;
}
a[href] {
color: blue;
text-decoration: underline;
}
</style>
</head>
<body>
<h4><span style="font-family: Arial,Helvetica,sans-serif">Name</span></h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="text" name='Name'/></p>
<h4 style="font-family: Arial,Helvetica,sans-serif">Surname</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="text" name='Surname'/></p>
<h4 style="font-family: Arial,Helvetica,sans-serif">Username</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="text" name='Username' /></p>
<hr style="font-family: Arial,Helvetica,sans-serif" />
<h4 style="font-family: Arial,Helvetica,sans-serif">Email</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="text" name='Email' /></p>
<h4 style="font-family: Arial,Helvetica,sans-serif">Confirm Email</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="text" name='C_Email' /></p>
<hr style="font-family: Arial,Helvetica,sans-serif" />
<h4 style="font-family: Arial,Helvetica,sans-serif">Password</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="password" name='password' /></p>
<h4 style="font-family: Arial,Helvetica,sans-serif">Confirm Password</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="password" name='c_password'/></p>
<hr style="font-family: Arial,Helvetica,sans-serif" />
<h4 style="font-family: Arial,Helvetica,sans-serif">Security Question</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="password" name='SecQ' /></p>
<h4 style="font-family: Arial,Helvetica,sans-serif">Security Answer</h4>
<p style="font-family: Arial,Helvetica,sans-serif"> <input type="password" name='SecA'/></p>
<hr style="font-family: Arial,Helvetica,sans-serif" />
<hr style="font-family: Arial,Helvetica,sans-serif" />
<p><span
style="font-family: Arial,Helvetica,sans-serif"><button>Submit</button></span></p>
</body>
</html>
<?php
$Name = $_POST['Name'];
$Surname = $_POST['Surname'];
$Username = $_POST['Username'];
$Email = $_POST['Email'];
$C_Email = $_POST['C_Email'];
$Password = $_POST['password'];
$C_Password = $_POST['c_password'];
$SecQ = $_POST['SecQ'];
$SecA = $_POST['SecA'];
$mysql_connect ('localhost', 'admin', 'storefile1234');
mysql_select_db ("storefile");
$check_username = mysql_query("SELECT FROM users WHERE username = '$Username'");
$check_email = mysql_query("SELECT FROM users WHERE email = '$Email'");
if ($Name == null || $Surname== null || $Username == null || $Password == null || $C_Password == null || $Email == null || $C_Email == null || $SecQ == null || $SecA == null ) {
echo "Missing details. Please enter all fields.";
} else {
if(mysql_num_rows($check_username) != 0 && mysql_num_rows($check_email) != 0)
{
echo "Username/Email already exists";
}
if ($Email == $C_Email && $Password == $C_Password) {
$query = "INSERT INTO users (Username, Name,Surname, Password, Email, SecQ, SecA) VALUES ('NULL', ".$Username."', ".$Name."', ".$Surname."', ".$Password."', ".$SecQ."', ".$SecA."', ".$Email.')"';
mysql_query($query) or die ('Error registering.');
echo "Greetings, ".$Name.", you have been registered. ";
} else {
echo "Error registering your account. Please try again.";
}
}
?>
Any help would be appreciated.
Thanks!
Before you extract values from $_POST, you should check if they exist. You could use the isset function for this (http://php.net/manual/en/function.isset.php)
You're getting errors because you're attempting to read post variables that haven't been set, they only get set on form submission. Wrap your php code at the bottom in an
if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }
Also, your code is ripe for SQL injection. At the very least use mysql_real_escape_string on the post vars before using them in SQL queries. mysql_real_escape_string is not good enough for a production site, but should score you extra points in class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With