My php script does not work as it should
Hey everyone, I'm what you call "Thick". And I'm trying to create a PHP register page. I seem to have got it to do something but it doesn't seem to register the information in to MY SQL PHPmyAdmin. For example: It states once you have filled out the form, that the information has been registered, but there's nothing in the DB, I was wondering if someone could give me a hand and see what it is I'm doing wrong.
I am new to website building, but I've been at it now for a year or so, and I'm now trying to put my proper site together. But I'm totally stuck on this part. If anyone could help... I would really appreciate it. Here are my codes.
FORM
<form action="##########" name="########" id="###########" method="POST">
<table border="0" width="625" align="left" cellpadding="15" cellspacing="0"开发者_如何学编程 bgcolor="#000000">
<tr>
<td class="text4" align="right">
Nickname:
</td>
<td>
<div id='################' class="error_strings"></div>
<input type="text" name="nickname" />
</td>
</tr>
<tr>
<td class="text4" align="right">
E-mail:
</td>
<td>
<div id='###############' class="error_strings"></div>
<input type="text" name="email" />
</td>
</tr>
<tr>
<td class="text4" align="right">
Password:
</td>
<td>
<div id='###############' class="error_strings"></div>
<input type="password" name="password" />
</td>
<tr>
<td class="text4" align="right">
Date of birth:
</td>
<td>
<inputtype="hidden" name="date_of_bith">
<select name="bday">
<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 selected value="31">31</option>
</select>
<select name="bmonth" >
<option selected value="1">1</option>
<option value=""></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>
</select>
<select name="byear">
<option value="2005">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 selected 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>
</td>
</td>
</tr>
<tr>
<td class="text4" align="right">
Country:
</td>
<td>
<div id='################' class="error_strings"></div>
<align="left" valign="top">
<select name="country" value="000" select="select" class="INPUT">
<option value=""></option>
<option value="3">Africa</option>
<option value="1">Australia</option>
<option value="2">Canada</option>
<option value="3">China</option>
<option value="3">European Union</option>
<option value="3">Greenland</option>
<option value="3">Iceland</option>
<option value="3">Israel</option>
<option value="3">Japan</option>
<option value="3">New Zealand</option>
<option value="3">Norway</option>
<option value="3">Russia</option>
<option value="3">South America</option>
<option value="3">Thailand</option>
<option value="3">Turkey</option>
<option value="3">Switzerland</option>
<option value="3">United States of America</option>
<option value="3">Other</option>
</select>
</td>
</tr>
<tr>
<td class="text4" align="right">
Terms and conditions:
</td>
<td>
<div id='##############' class="error_strings"></div>
<input type='checkbox' name='features[]' id='features_item_0' value='terms'/><label for='features_item_0'class="text4"> I agree </label>
</td>
</tr>
<tr>
<td align="right"></td>
<td>
<input type="submit" value="Sign up" />
</td>
</tr>
</table>
</form>
PHP File:
<?php
// Connects to Database
include("connect.php");
/*
mysql_connect("http://#############", "nickname", "password", "date_of_bith", "country", "terms") or die(mysql_error());
mysql_select_db("#########") or die(mysql_error());
*/
//This code runs if the form has been submitted
if (isset($_POST['submit'])) {
//This makes sure they did not leave any fields blank
if (!$_POST['nickname'] | !$_POST['email'] | !$_POST['passwords'] | !$_POST['date_of_birth'] | !$_POST['country'] | !$_POST['terms']) {
die('You did not complete all of the required fields');
}
// checks if the username is in use
if (!get_magic_quotes_gpc()) {
$_POST['nickname'] = addslashes($_POST['nickname']);
}
$usercheck = $_POST['nickname'];
$check = mysql_query("SELECT user FROM userlogin WHERE nickname = '$nickname'")
or die(mysql_error());
$check2 = mysql_num_rows($check);
//if the name exists it gives an error
if ($check2 != 0) {
die('Sorry, the nickname '.$_POST['nickname'].' is already in use.');
}
// here we encrypt the password and add slashes if needed
$_POST['password'] = md5($_POST['password']);
if (!get_magic_quotes_gpc()) {
$_POST['terms'] = addslashes($_POST['terms']);
$_POST['country'] = addslashes($_POST['password']);
$_POST['date_of_birth'] = addslashes($_POST['date_of_birth']);
$_POST['password'] = addslashes($_POST['password']);
$_POST['email'] = addslashes($_POST['email']);
$_POST['nickname'] = addslashes($_POST['nickname']);
}
// now we insert it into the database
$insert = "INSERT INTO ###### (nickname, email, password, date_of_birth, country, terms)
VALUES ('".$_POST['nickname']."', '".$_POST['email']."', '".$_POST['password']."', '".$_POST['date_of_birth']."', '".$_POST['country']."', '".$_POST['terms']."')";
$add_member = mysql_query($insert);
}
?>
<h1>Registered</h1>
<p>Thank you, you have registered - you may now login <a href="http://##########"> Click here to go to login page</a></p>
Thanks for any tips or help you can give me.
Your form has no input with the name "submit" so if (isset($_POST['submit']))
will always be false. Try adding name="submit"
to the submit button's attributes, that should get it working at least a bit further.
EDIT: Also, WHERE nickname = '$nickname'
will always return 0 rows (unless you have a user with an empty username which is bad too) because you don't have a PHP variable with that name. It should be WHERE nickname = '$usercheck'
.
if (isset($_POST['submit'])) {
//....
}
the problem is there, you don't have an input or any thing named submit, so it don't go through the if
What is the following supposed to do?
"INSERT INTO ######
You need to give INSERT
a table name. I suspect whatever source you found this at meantfor you to replace ######
with the name of your users/accounts table.
There are a lot of other problems with your code, but a few major ones are:
- Instead of checking for
$_POST['submit']
, which doesn't exist in your form, you should check to see which the HTTP verb used to make the request with$_SERVER['REQUEST_METHOD']
- Don't use
addslashes
to escape data for your queries. You should be checking ifget_magic_quotes_gpc
is enabled, and if it is, removing slashes withstripslashes
and then escaping them properly withmysql_real_escape_string
. Better just use PDO. - Don't use MD5 for password hashing, it is broken. Use a real password hashing library like phppass.
A final request, please please learn to format so that it is actually readable. Use consistent indenting and spacing.
Try after adding
<input name="submit" type="submit" value="Sign up" />
Add or die(mysql_error()) to get the SQL error.
精彩评论