PHP表单发送-将数据保存到表,发送激活电子邮件


PHP Form Send - Save Data to Table, send activation email?

我正在尝试创建一个表单,该表单将在我的数据库中创建一个用户,这样他们就可以拥有一个配置文件页面。我还希望表格发送一封电子邮件来确认激活。我的表格断开在哪里?截至目前,我没有在数据库中记录任何内容,也没有发送任何电子邮件。

<?php include ("session.php"); ?>
<?php // Set error message as blank upon arrival to page
$errorMsg = "";
// First we check to see if the form has been submitted 
if (isset($_POST['username'])){
//Connect to the database through our include 
include_once "connect_to_mysql.php";
// Filter the posted variables
$username = ereg_replace("[^A-Za-z0-9]", "", $_POST['username']); // filter everything but numbers and letters
$address = ereg_replace("[^A-Z a-z0-9]", "", $_POST['address']); // filter everything but spaces, numbers, and letters
$city = ereg_replace("[^A-Z a-z0-9]", "", $_POST['state']); // filter everything but spaces, numbers, and letters
$state = ereg_replace("[^A-Z a-z0-9]", "", $_POST['city']); // filter everything but spaces, numbers, and letters
$accounttype = ereg_replace("[^a-z]", "", $_POST['accounttype']); // filter everything but lowercase letters
$zip = ereg_replace("[^a-z]", "", $_POST['zip']); // filter everything but lowercase letters
$name = ereg_replace("[^A-Z a-z0-9]", "", $_POST['name']); // filter everything but spaces, numbers, and letters
$fax = ereg_replace("[^A-Z a-z0-9]", "", $_POST['fax']); // filter everything but spaces, numbers, and letters
$company = ereg_replace("[^A-Z a-z0-9]", "", $_POST['company']); // filter everything but spaces, numbers, and letters
$website = ereg_replace("[^A-Z a-z0-9]", "", $_POST['website']); // filter everything but spaces, numbers, and letters
$numemployees = ereg_replace("[^A-Z a-z0-9]", "", $_POST['numemployees']); // filter everything but spaces, numbers, and letters
$yearsbusiness = ereg_replace("[^A-Z a-z0-9]", "", $_POST['yearsbusiness']); // filter everything but spaces, numbers, and letters
$annualrevenue = ereg_replace("[^A-Z a-z0-9]", "", $_POST['annualrevenue']); // filter everything but spaces, numbers, and letters
$industrysector = ereg_replace("[^A-Z a-z0-9]", "", $_POST['industrysector']); // filter everything but spaces, numbers, and letters
$preferredcontact = ereg_replace("[^A-Z a-z0-9]", "", $_POST['preferredcontact']); // filter everything but spaces, numbers, and letters
$referralsource = ereg_replace("[^A-Z a-z0-9]", "", $_POST['referralsource']); // filter everything but spaces, numbers, and letters    
$email = stripslashes($_POST['email']);
$email = strip_tags($email);
$email = mysql_real_escape_string($email);
$password = ereg_replace("[^A-Za-z0-9]", "", $_POST['password']); // filter everything but numbers and letters
// Check to see if the user filled all fields with
// the "Required"(*) symbol next to them in the join form
// and print out to them what they have forgotten to put in
if((!$username) || (!$address) || (!$state) || (!$city) || (!$accounttype) || (!$email) || (!$password)){
    $errorMsg = "You did not submit the following required information!<br /><br />";
    if(!$username){
        $errorMsg .= "--- User Name";
     } else if(!$name){ 
       $errorMsg .= "Please Enter Your Full Name."; 
     } else if(!$phone){ 
       $errorMsg .= "Please enter your Phone Number."; 
     } else if(!$fax){ 
       $errorMsg .= "Please enter your Fax Number."; 
     } else if(!$email){ 
       $errorMsg .= "Please enter your Email Address.";
     } else if(!$address){
        $errorMsg .= "Please enter your Address."; 
     } else if(!$city){ 
       $errorMsg .= "Please enter the City in which you reside"; 
     } else if(!$state){ 
        $errorMsg .= "Please enter the State in which you reside."; 
     } else if(!$zip){ 
       $errorMsg .= "Please enter the Zip Code in which you reside"; 
     } else if(!$company){ 
       $errorMsg .= "Please enter the name f your Company."; 
     } else if(!$website){ 
       $errorMsg .= "Please enter your company website."; 
     } else if(!$numemployees){ 
       $errorMsg .= "Please enter the current number of employees at your company."; 
     } else if(!$yearsbusiness){ 
       $errorMsg .= "Please enter the number of years you've been in business."; 
     } else if(!$annualrevenue){ 
       $errorMsg .= "Please enter your companies Approximate Annual Revenue."; 
     } else if(!$industrysector){ 
       $errorMsg .= "Please enter the Industry Sector."; 
     } else if(!$accounttype){ 
       $errorMsg .= "Please choose a Membership Type."; 
     } else if(!$preferredcontact){ 
       $errorMsg .= "Please enter your preferred method of contact.";
     } else if(!$referralsource){ 
       $errorMsg .= "Please enter the Referral Source."; 
     } else 
// Database duplicate Fields Check
$sql_username_check = mysql_query("SELECT id FROM members WHERE username='$username' LIMIT 1");
$sql_email_check = mysql_query("SELECT id FROM members WHERE email='$email' LIMIT 1");
$username_check = mysql_num_rows($sql_username_check);
$email_check = mysql_num_rows($sql_email_check); 
if ($username_check > 0){ 
    $errorMsg = "<u>ERROR:</u><br />Your User Name is already in use inside our system. Please try another.";
} else if ($email_check > 0){ 
    $errorMsg = "<u>ERROR:</u><br />Your Email address is already in use inside our system. Please try another.";
} else {
    // Add MD5 Hash to the password variable
   $hashedPass = md5($password); 
    // Add user info into the database table, claim your fields then values 
    $sql = mysql_query("INSERT INTO members (username, email, password, phone, address, city, state, zip, emailactivated, accounttype, lastlogin, signupdate, name, fax, company, website, numemployees, yearsbusiness, annualrevenue, industrysector, preferredcontact, referralsource) 
    VALUES('$username', '$email', '$password', '$phone', '$address', '$city', '$state', '$zip', '$emailactivated', '$accounttype', '$lastlogin', '$signupdate', '$name', '$fax', '$company', '$website', '$numemployees', '$yearsbusiness', '$annualrevenue', '$industrysector', '$preferredcontact', '$referralsource', now())") or die (mysql_error());
    // Get the inserted ID here to use in the activation email
    $id = mysql_insert_id();
    // Create directory(folder) to hold each user files(pics, MP3s, etc.) 
    mkdir("memberFiles/$id", 0755); 
    // Start assembly of Email Member the activation link
    $to = "$email";
    // Change this to your site admin email
    $from = "###############";
    $subject = "One Last Step";
    //Begin HTML Email Message where you need to change the activation URL inside
    $message = '<html>
    <body bgcolor="#FFFFFF">
    Hi ' . $name . ',
    <br /><br />
    One Last Step before we can review your application. 
    <br /><br />
    Please click here to activate now &gt;&gt;
    <a href="http://www.############.com/activation.php?id=' . $id . '">
    ACTIVATE NOW</a>
    <br /><br />
    Your Login Data is as follows: 
    <br /><br />
    E-mail Address: ' . $email . ' <br />
    Password: ' . $password . ' 
    <br /><br /> 
    Thanks! 
    <br /><br /> 
    Houstonians For A Better Tomorrow
    </body>
    </html>';
    // end of message
    $headers = "From: $from'r'n";
    $headers .= "Content-type: text/html'r'n";
    $to = "$to";
    // Finally send the activation email to the member
    mail($to, $subject, $message, $headers);
    // Then print a message to the browser for the joiner 
    print "<br /><br /><br /><h4>OK $firstname, one last step to verify your email identity:</h4><br />
    We just sent an Activation link to: $email<br /><br />
    <strong><font color='"#990000'">Please check your email inbox in a moment</font></strong> to click on the Activation <br />
    Link inside the message. After email activation you can log in.";
    exit(); // Exit so the form and page does not display, just this success message
} // Close else after database duplicate field value checks
} // Close else after missing vars check
} //Close if $_POST
?>
<?php include ("header.php"); ?>
            </div>
        </div>
        <?php include ("subhead.php"); ?>
        <!-- Content Wrapper -->
        <div class="contentWrapper">
            <div class="outerShadow">
            </div>
            <div class="innerShadow">
            </div>
            <div class="center clearfix">
                <!-- Additional clearfix necessary for non floated objects -->
                <div class="clearfix">
                </div>
                <!-- Content Starts - Header template should end here -->
                <!--Left layout column -->
                <div class="siteColumnLeft">
                    <div class="column">
 <table width="750" align="center" cellpadding="4">
<tr>
<td width="7%">Please complete the entire application. </td>
</tr>
</table>
<table width="600" align="center" cellpadding="5">
<form action="join_form.php" method="post" enctype="multipart/form-data">
<tr>
  <td colspan="2"><font color="#FF0000"><?php echo "$errorMsg"; ?></font></td>
</tr>
<tr>
      <td width="300"><div align="right">User Name:</div></td>
      <td width="450"><input name="username" type="text" value="<?php echo "$username"; ?>" /></td>
</tr>
      <tr>
      <td width="300"><div align="right"> Password: </div></td>
      <td width="450"><input name="password" type="password" value="<?php echo "$password"; ?>" /> 
  <font size="-2" color="#006600">(letters or numbers only, no spaces no symbols)</font></td>
</tr>
  <tr>
  <td width="300"><div align="right">Name:</div></td>
  <td width="450"><input name="name" type="text" value="<?php echo "$name"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Phone:</div></td>
  <td width="450"><input name="phone" type="text" value="<?php echo "$phone"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Fax:</div></td>
  <td width="450"><input name="fax" type="text" value="<?php echo "$fax"; ?>" /></td>
</tr>
  <tr>
  <td width="163"><div align="right">Email:</div></td>
  <td width="450"><input name="email" type="text" value="<?php echo "$email"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Address:</div></td>
  <td width="450"><input name="address" type="text" value="<?php echo "$address"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">City: </div></td>
  <td width="450"><input name="city" type="text" value="<?php echo "$city"; ?>" /></td>
</tr>
<tr>
  <td width="300"><div align="right">State: </div></td>
  <td width="450"><input name="state" type="text" value="<?php echo "$state"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Zip Code: </div></td>
  <td width="450"><input name="zip" type="text" value="<?php echo "$zip"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Company: </div></td>
  <td width="450"><input name="company" type="text" value="<?php echo "$company"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Website: </div></td>
  <td width="450"><input name="website" type="text" value="<?php echo "$website"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">No. Of Employees: </div></td>
  <td width="450"><input name="numemployees" type="text" value="<?php echo "$numemployees"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">How many years have you been in business? </div></td>
  <td width="450"><input name="yearsbusiness" type="text" value="<?php echo "$yearsbusiness"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">What are your Approximate Annual Revenues? </div></td>
  <td width="450"><input name="annualrevenue" type="text" value="<?php echo "$annualrevenue"; ?>" /></td>
</tr>
  <tr>
  <td width="300"><div align="right">Industry Sector: </div></td>
  <td width="450"><input name="industrysector" type="text" value="<?php echo "$industrysector"; ?>" /></td>
</tr>
<tr>
  <td width="300"><div align="right">What level would you like to become a member of Houstonians For A Better Tomorrow? </div></td>
  <td width="450"><select name="accounttype">
    <option value="<?php echo "$accounttype"; ?>"><?php echo "$accounttype"; ?></option>
    <option value="a">Urban Small Business Member</option>
    <option value="b">Corporate Member</option>
    <option value="c">Non-Profit</option>
  </select></td>
</tr>
  <tr>
  <td width="300"><div align="right">How do you prefer to receive updates? </div></td>
  <td width="450"><select name="preferredcontact">
    <option value="<?php echo "$preferredcontact"; ?>"><?php echo "$preferredcontact"; ?></option>
    <option value="a">Email</option>
    <option value="b">Fax</option>
    <option value="c">Direct Mail</option>
  </select></td>
</tr>
    <tr>
  <td width="300"><div align="right">How did you find out about Houstonians For A Better Tomorrow?</div></td>
  <td width="450"><select name="referralsource">
    <option value="<?php echo "$referralsource"; ?>"><?php echo "$referralsource"; ?></option>
    <option value="a">Advertising - TV </option>
    <option value="b">Advertising - Radio</option>
    <option value="c">Advertising - Online</option>
    <option value="c">Advertising - Print</option>
    <option value="c">Referral</option>
  </select></td>
</tr>
<tr>
  <td width="300"><div align="right"></div></td>
  <td width="450"><input type="submit" name="Submit" value="Submit Form" /></td>
</tr>
</form>
</table>
        </div></div>              
            </div>
        </div>
        <!-- Twitter Widget -->
        <div class="twitterWidget">
            <div class="center">
                <!-- Simply change the href to your username -->
                <a class="profileLink" href="http://twitter.com/##############"></a><p>Loading<span>Retrieving latest tweet...</span></p>
            </div>
        </div>
            <?php include ("footer.php"); ?>
</body></html>

假定join_form.php是当前表单(请改用$_SERVER['HP_SELF'])。。。插入一些调试代码,这样您就可以跟踪正在发生的事情:在文档的顶部放置以下内容,这样您可以查看正在传递的内容。

var_dump($_POST);

在每个"if"语句之后都会回显"Here 1"或"Here 2",这样您就可以看到代码的去向。

在您的ereg_replace()之后使用:

var_dump($username, $address, $state, $city, $accounttype, $email, $password);

然后你就可以开始调试你的问题了。