我有一张拒绝输入数据的注册表。无论如何它都说缺少必需的字段。我无法弄清楚为什么。如果有人会介意在我的代码上放一双眼睛,看看你是否能看到我的错误,我会很感激。
谢谢! 这是注册操作代码。
<?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>
答案 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)),以检查从表单接收的所有值 - 这应该给出你很好地指出了问题所在。