PHP注册表没有输入到DB

时间:2014-03-05 16:51:36

标签: php mysql forms

我有一张拒绝输入数据的注册表。无论如何它都说缺少必需的字段。我无法弄清楚为什么。如果有人会介意在我的代码上放一双眼睛,看看你是否能看到我的错误,我会很感激。

谢谢! 这是注册操作代码。

<?php   
session_start(); 
// BEGIN - GRAB ALL POSSIBLE VARS FROM FORM AND DO LIGHT SCRUBBING //
    // REQUIRED FIELDS //
    $first = str_replace(" ", "", strip_tags(addslashes($_POST['first'])));
    $last = str_replace(" ", "", strip_tags(addslashes($_POST['last'])));
    $email = str_replace(" ", "", strip_tags(addslashes($_POST['email'])));
    $username = str_replace(" ", "", strip_tags(addslashes($_POST['username'])));
    $pass1 = str_replace(" ", "", strip_tags(addslashes($_POST['pass1'])));
    $pass2 = str_replace(" ", "", strip_tags(addslashes($_POST['pass2'])));
    $agree = strip_tags(addslashes($_POST['agree']));
    // NOT REQUIRED FILEDS //
    $address = strip_tags(addslashes($_POST['address']));
    $city  = strip_tags(addslashes($_POST['city']));
    $state  = str_replace(" ", "", strip_tags(addslashes($_POST['state'])));
    $zip  = str_replace(" ", "", strip_tags(addslashes($_POST['zip'])));
// END - GRAB ALL POSSIBLE VARS FROM FORM AND DO LIGHT SCRUBBING //

    $accessCode = strip_tags(addslashes($_POST['accessCode']));
// BEGIN - CHECK TO SEE IF USER AGREES TO TERMS OF WEBSITE //
    if($agree == "Y"){
    // USER HAS CHECK THE BOX SO CONTINUE //
    }else{
    echo 'You must agree to our website policy to be a member';
    exit();
    };
// END - CHECK TO SEE IF USER AGREES TO TERMS OF WEBSITE //

// BEGIN - CHECK IF ANY REQUIRED FIELD IS EMPTY //
    if((empty($first))||(empty($last))||(empty($email))||empty($accessCode) ||(empty($username))||(empty($pass1))||(empty($pass2))){
    echo 'Required field empty';
    exit();
    }else{
    // MAKE SURE FIRST LETTER OF FIRST AND LAST ARE CAPITAL AND MAKE SURE USERNAME IS ALL LOWERCASE THEN CONTINUE //
    $first = ucfirst($first);
    $last = ucfirst($last);
    $username = strtolower($username);
    };
// END - CHECK IF ANY REQUIRED FIELD IS EMPTY //
    if( $accessCode != '75150' )
    {
       echo 'Access code is invalid';  
    }

// BEGIN - CHECK TO SEE IF EMAIL ADDRESS IS ALREADY REGISTERED //
    $validEmailString = '/^([a-zA-Z0-9])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/';
    if(preg_match("/\bmrpixel.biz\b/i", "" . $email . "")){
    echo 'texcomconstruction.biz email address not allowed.';
    exit();
    }elseif(!preg_match($validEmailString, $email)){
    echo $email . ' is not a valid email address.';
    exit();
    }else{
    // EMAIL IS GOOD SO GO CHECK TABLE TO SEE IF EMAIL IS ALREADY IN THERE //

        include("connect.php");
        // SCRUB $EMAIL TO PREVENT SQL INJECTION BEFORE QUERYING TABLE //
        mysql_real_escape_string($email);
        $sql = mysql_query("SELECT email FROM members WHERE email = '" . $email . "'");
            if(mysql_num_rows($sql) > 0){
            echo 'Email address is already registered';
            exit();
            }else{
            // EMAIL NOT IN TABLE SO CONTINUE //
            };
        mysql_close($connection);  
    };// end if check to see if email is valid //
// END - CHECK TO SEE IF EMAIL ADDRESS IS ALREADY REGISTERED //

// DON'T NEED TO CHECK TO SEE IF USERNAME IS ALREADY REGISTERED SINCE IT IS CHECKED ON BLUR OF USERNAME FIELD IN FORM WITH JQUERY //

// BEGIN - CHECK LENGTH OF PASSWORD FIELD //
if((strlen($pass1) < 8) || (strlen($pass1) > 20)){
echo 'Password must be between 8 and 20 characters';
exit();
}else{
// CONTINUE //
};
// END - CHECK LENGTH OF PASSWORD FIELD //

// BEGIN - CHECK TO SEE IF PASSWORDS MATCH //
if($pass1 == $pass2){
// PASSWORDS MATCH SO CONTINUE //
}else{
echo 'Passwords don\'t match';
exit();
};
// END - CHECK TO SEE IF PASSWORDS MATCH //


// AT THIS POINT ALL CHECKS PASS AND IT'S TIME TO GENERATE ACTIVATION CODE THAT WILL BE SENT IN EMAIL AND FULLY SCRUB THE DATA TO PROTECT THE DATABASE //
$activationCode = substr(hash('sha512',rand()),0,10);// THIS CODE GENERATES A RANDOMIZED STRING THAT'S 10 CHARATERS LONG //
$activationCodeExpire = (time()+(60*15));// THIS CODE CREATES A VALUE OF 15 MINUTES IN THE FUTURE IN ORDER TO EXPIRE THE ACTIVATION LINK IN THE EMAIL //
include("connect.php");
$first = mysql_real_escape_string($first);
$last = mysql_real_escape_string($last);
$email = mysql_real_escape_string($email);
$username = mysql_real_escape_string($username);
$pass1 = mysql_real_escape_string($pass1);
$address = mysql_real_escape_string($address);
$city = mysql_real_escape_string($city);
$state = mysql_real_escape_string($state);
$zip = mysql_real_escape_string($zip);


$insert = mysql_query("INSERT INTO members (first, last, username, email, password, address, city, state, zip) VALUES ("."'".  $first . "', '" . $last . "', '" . $username . "', '" . $email . "', '" . sha1($pass1) . "', '" . $address . "', '" . $city . "', '" . $state . "', '" . $zip . "')");


if($insert === FALSE)
{
    echo mysql_error(); 
    echo 'Registration failed please notify admin if problem persists.';    
}
else 
{
     mkdir("../members/$username", 0755, true);
    $_SESSION['first'] = $first; 
    $_SESSION['last'] = $last; 
    $_SESSION['username'] = $username; 
    $_SESSION['email'] = $email; 
    $_SESSION['id'] = mysql_insert_id($connection); 
    header('Location: ../dashboard.php'); 
}
?>

这是我的表格!

<script src="../js/registerForm.js"></script>

<div id="rLeft" style="float:left;border:0px solid;padding:10px;width:50%;border-radius:15px;">

<div style="width:270px;color:#999;margin-left:auto;margin-right:auto;font-size:12px;"><span style="float:;">Member Registration</span><span style="float:right;font-size:10px;"><span style="color:#FF0000;">*</span> required</span>
<div style="clear:both;"></div>
</div>

<form id="registerForm" method="post" action="actions/register.php" enctype="multipart/form-data">
<div class="inputContainer">
<span id="reqfn" class="astrick">*</span>
<input id="fninput" type="text" name="first" placeholder="First name" autocomplete="off" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">First name</div>

<div class="inputContainer">
<span id="reqln" class="astrick">*</span>
<input id="lninput" type="text" name="last" placeholder="Last name" autocomplete="off" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Last name</div>

<div class="inputContainer">
<span id="reqe" class="astrick">*</span>
<input id="einput" type="text" name="email" placeholder="Email" autocomplete="off" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Email address</div>

<div class="inputContainer">
<span id="requname" class="astrick">*</span>
<input id="unameinput" type="text" name="username" placeholder="Username" autocomplete="off" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Username</div>

<div class="inputContainer">
<span id="reqp1" class="astrick">*</span>
<input id="pass1input" type="password" naue="pass1" placeholder="Password" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Password</div>

<div class="inputContainer">
<span id="reqp2" class="astrick">*</span>
<input id="pass2input" type="password" name="pass2" placeholder="Re-enter Password" />
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Re-enter Password</div>

<div class="inputContainer">
    <span id="reqp2" class="astrick">*</span>
    <input id="accessCode" type="text" name="accessCode" placeholder="Access Code" />
    <div style="clear:left;"></div>
</div>
<div class="ieLabel">Access Code</div>

<div style="width:260px;margin:auto;font-size:10px;position:relative;left:-8px;">
<input type="checkbox" name="agree" value="Y"> <span style="color:#FF0000;">*</span> Agree to website <a href="#">policy</a>
</div>

<div class="inputContainer">
<input type="text" name="address" placeholder="Street address"  autocomplete="off"/>
<div style="clear:left;"></div>
</div>
<div class="ieLabel">Street address</div>

<div class="inputContainer">
<input type="text" name="city" placeholder="City"  autocomplete="off"/>
<div style="clear:left;"></div>
</div>
<div class="ieLabel">City</div>

<div id="StateZipHolder" style="width:260px;margin-top:3px;margin-bottom:3px;margin-left:auto;margin-right:auto;padding-top:3px;padding-bottom:3px;">
<div style="float:left;border:1px #999 solid;border-radius:4px;padding-top:2px;padding-left:3px;padding-right:3px;padding-bottom:5px;position:relative;left:-3px;">
<select style="border:none;width:140px;color:#666;" name="state" >
<option value="">State</option>
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District Of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
</select>
</div>

<div style="float:left;border:1px #999 solid;border-radius:4px;padding-top:2px;padding-bottom:2px;padding-top:2px;position:relative;left:1px;">
<input id="zipText" type="text" name="zip" placeholder="Zip code" maxlength="5" autocomplete="off" />
</div>
<div style="clear:both;"></div>
</div>

<div style="width:260px;margin:auto;">
<input id="registerSubmit" type="submit" value=" Sign up " class="loginButton" />
</div>

</form>

<div id="regAlert"></div><!-- TARGET DIV TO DISPLAY ANY ERRORS IN REGISTER FORM - TEXT ECHOED BY JQUERY -->

</div>

2 个答案:

答案 0 :(得分:1)

(关闭问题)

此行有拼写错误:

<input id="pass1input" type="password" naue="pass1" placeholder="Password" />
                                       ^^^^

其中naue应为name

<input id="pass1input" type="password" name="pass1" placeholder="Password" />

答案 1 :(得分:0)

在您的代码中,如果以下任何变量不存在:

$_POST['first']
$_POST['last']
$_POST['email']
$_POST['accessCode']
$_POST['username']
$_POST['pass1']
$_POST['pass2']

然后您的表单将不会提交,并且您将收到一条错误消息,指出缺少必填字段,我们可以在此处看到:

if((empty($first))||(empty($last))||(empty($email))||empty($accessCode) ||(empty($username))||(empty($pass1))||(empty($pass2))){
    echo 'Required field empty';
    exit();
    }

要开始调试,我首先会在register.php的顶部做死(var_dump($ _ POST))或死(print_r($ _ POST)),以检查从表单接收的所有值 - 这应该给出你很好地指出了问题所在。