Form Validation and DB Query
| From: | CK | Date: | Wed, 01 Aug 2007 21:34:02 +0000 |
| Subject: | Form Validation and DB Query | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-260030@lists.php.net to get a copy of this message | ||
Hi,
Being thrust into cleaning after another has me timid. Could some kind soul look over the following solution for form validation and DB query? Any suggestions on security and streamlining is humbly requested.
CK
<?php
$firstname =$_POST['firstname'];
$lastname = $_POST['lastname']);
$email = $_POST['email']);
$address = $_POST['address']);
$city = $_POST['city']);
$state = $_POST['state']);
$zip = $_POST['zip']);
$comments = $_POST['comments']);
$newsletter = $_POST['signup']);
$contact = $_POST['contact']);
$dt = "'".date('Y-m-d H:i:s');
$message = "First Name: ".$firstname."\n";
$message .= "Last Name: ".$lastname."\n";
$message .= "Email: ".$email."\n";
$message .= "Address: ".$address."\n";
$message .= "City: ".$city."\n";
$message .= "State: ".$state."\n";
$message .= "Zip: ".$zip."\n";
$message .= "Comments: ".$comments."\n";
$message .= "Newsletter: ".$newsletter."\n";
$message .= "Contact: ".$contact."\n";
function validate_form($email,$firstname,$lastname)
{
if(strlen($firstname)>0){
$firstname=stripslashes($firstname);
}else{//If no name was entered.
$firstname=NULL;
echo '<p><em>You forgot to enter your first name.</em></p>';
}
if(strlen($lastname)>0){
$lastname=stripslashes($fm_lastname);
}else{//If no name was entered.
$lastname=NULL;
echo '<p><em>You forgot to enter your last name.</em></p>';
}
// Create the syntax of email with validation regular expression
$regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
// Presume that the email is invalid
$valid = false;
// Validate the syntax
if (eregi($regexp, $email))
{
list($username,$domaintld) = split("@",$email);
// Validate the domain
if (getmxrr($domaintld,$mxrecords))
$valid = true;
}
// attempts a socket connection to mail server
if(@fsockopen($domaintld,25,$errno,$errstr,15)) {
$valid = true;
} else {
$valid = false;echo '<p><em>Please check your email and try again.</em></p>'; } return $valid; } if (validate_form($email,$firstname,$lastname))
@ $db = mysql_connect('mysql_host', 'mysql_user', 'mysql_password);
if (mysql_errno()) {
echo '<p>error connecting to database</p>';
exit;
}
if (!mysql_select_db("mysql_user")) {
echo "<p>There is a system error - please try later</p>";
exit;
}
$query = "insert into users values (NULL, ".$firstname.", ".$lastname.", ".$email.", ".$address.", ".$city.", ".$state.", ".$zip.", ".$comments.", ".$newsletter.", ".$contact.", ".$dt.")";
mysql_real_escape_string($firstname, $query),
mysql_real_escape_string($lastname, $query),
mysql_real_escape_string($email, $query),
mysql_real_escape_string($address, $query),
mysql_real_escape_string($city, $query),
mysql_real_escape_string($state, $query),
mysql_real_escape_string($zip, $query),
mysql_real_escape_string($comments, $query),
mysql_real_escape_string($newsletter, $query),
mysql_real_escape_string($contact, $query),
mysql_real_escape_string($dt, $query),
//echo "<p>".$query."</p>";
$result = mysql_query($query, $db);
if (!$result) {
echo "<p>".mysql_error()."</p>";
exit;
} else {
$to = "some@someplace.org";
$subject = "CTS Contact";
mail($to, $subject, $message);
}
}} ?>