开发者

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 if get_magic_quotes_gpc is enabled, and if it is, removing slashes with stripslashes and then escaping them properly with mysql_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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜