Code:
<?PHP
define('kOptional', true);
define('kMandatory', false);
define('kStringRangeFrom', 1);
define('kStringRangeTo', 2);
define('kStringRangeBetween', 3);
define('kYes', 'yes');
define('kNo', 'no');
error_reporting(E_ERROR | E_WARNING | E_PARSE);
ini_set('track_errors', true);
function DoStripSlashes($fieldValue) {
if ( get_magic_quotes_gpc() ) {
if (is_array($fieldValue) ) {
return array_map('DoStripSlashes', $fieldValue);
} else {
return stripslashes($fieldValue);
}
} else {
return $fieldValue;
}
}
function FilterCChars($theString) {
return preg_replace('/[\x00-\x1F]/', '', $theString);
}
function CheckString($value, $low, $high, $mode, $limitAlpha, $limitNumbers, $limitEmptySpaces, $limitExtraChars, $optional) {
if ($limitAlpha == kYes) {
$regExp = 'A-Za-z';
}
if ($limitNumbers == kYes) {
$regExp .= '0-9';
}
if ($limitEmptySpaces == kYes) {
$regExp .= ' ';
}
if (strlen($limitExtraChars) > 0) {
$search = array('\\', '[', ']', '-', '$', '.', '*', '(', ')', '?', '+', '^', '{', '}', '|');
$replace = array('\\\\', '\[', '\]', '\-', '\$', '\.', '\*', '\(', '\)', '\?', '\+', '\^', '\{', '\}', '\|');
$regExp .= str_replace($search, $replace, $limitExtraChars);
}
if ( (strlen($regExp) > 0) && (strlen($value) > 0) ){
if (preg_match('/[^' . $regExp . ']/', $value)) {
return false;
}
}
if ( (strlen($value) == 0) && ($optional === kOptional) ) {
return true;
} elseif ( (strlen($value) >= $low) && ($mode == kStringRangeFrom) ) {
return true;
} elseif ( (strlen($value) <= $high) && ($mode == kStringRangeTo) ) {
return true;
} elseif ( (strlen($value) >= $low) && (strlen($value) <= $high) && ($mode == kStringRangeBetween) ) {
return true;
} else {
return false;
}
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$clientIP = $_SERVER['REMOTE_ADDR'];
}
$FTGid = DoStripSlashes( $_REQUEST['id'] );
$FTGfeedback1 = DoStripSlashes( $_REQUEST['feedback1'] );
$FTGfeedback2 = DoStripSlashes( $_REQUEST['feedback2'] );
$FTGfeedback3 = DoStripSlashes( $_REQUEST['feedback3'] );
$FTGfeedback4 = DoStripSlashes( $_REQUEST['feedback4'] );
$FTGfeedback5 = DoStripSlashes( $_REQUEST['feedback5'] );
$FTGsubmit = DoStripSlashes( $_REQUEST['submit'] );
$FTGreset = DoStripSlashes( $_REQUEST['reset'] );
# Fields Validations
$validationFailed = false;
if (!CheckString($FTGid, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['id'] = 'No ID code entered';
$validationFailed = true;
}
if (!CheckString($FTGfeedback1, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['feedback1'] = 'Feedback field 1 data required';
$validationFailed = true;
}
if (!CheckString($FTGfeedback2, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['feedback2'] = 'Feedback field 2 data required';
$validationFailed = true;
}
if (!CheckString($FTGfeedback3, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['feedback3'] = 'Feedback field 3 data required';
$validationFailed = true;
}
if (!CheckString($FTGfeedback4, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['feedback4'] = 'Feedback field 4 data required';
$validationFailed = true;
}
if (!CheckString($FTGfeedback5, 1, 0, kStringRangeFrom, kNo, kNo, kNo, '', kMandatory)) {
$FTGErrorMessage['feedback5'] = 'Feedback field 5 data required';
$validationFailed = true;
}
# Include message in error page and dump it to the browser
if ($validationFailed === true) {
$errorPage = '<html><head><title>Error</title></head><body>Errors found: <!--VALIDATIONERROR--></body></html>';
$errorPage = str_replace('<!--FIELDVALUE:id-->', $FTGid, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:feedback1-->', $FTGfeedback1, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:feedback2-->', $FTGfeedback2, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:feedback3-->', $FTGfeedback3, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:feedback4-->', $FTGfeedback4, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:feedback5-->', $FTGfeedback5, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:submit-->', $FTGsubmit, $errorPage);
$errorPage = str_replace('<!--FIELDVALUE:reset-->', $FTGreset, $errorPage);
$errorPage = str_replace('<!--ERRORMSG:id-->', $FTGErrorMessage['id'], $errorPage);
$errorPage = str_replace('<!--ERRORMSG:feedback1-->', $FTGErrorMessage['feedback1'], $errorPage);
$errorPage = str_replace('<!--ERRORMSG:feedback2-->', $FTGErrorMessage['feedback2'], $errorPage);
$errorPage = str_replace('<!--ERRORMSG:feedback3-->', $FTGErrorMessage['feedback3'], $errorPage);
$errorPage = str_replace('<!--ERRORMSG:feedback4-->', $FTGErrorMessage['feedback4'], $errorPage);
$errorPage = str_replace('<!--ERRORMSG:feedback5-->', $FTGErrorMessage['feedback5'], $errorPage);
$errorList = implode("<br />\n", $FTGErrorMessage);
$errorPage = str_replace('<!--VALIDATIONERROR-->', $errorList, $errorPage);
echo $errorPage;
exit;
}
# Email to Form Owner
$emailSubject = FilterCChars("New Feedback Form");
$emailBody = "A new Feedback Form has arrived. See details below\n"
. "\n"
. "Job Code: $FTGid\n"
. "Question 1: $FTGfeedback1\n"
. "Question 2: $FTGfeedback2\n"
. "Question 3: $FTGfeedback3\n"
. "Question 4: $FTGfeedback4\n"
. "Question 5: $FTGfeedback5";
$emailTo = Form Test <john@doe.com>';
$emailFrom = FilterCChars("john@doe.com");
$emailHeader = "From: $emailFrom\n"
. "MIME-Version: 1.0\n"
. "Content-type: text/plain; charset=\"ISO-8859-1\"\n"
. "Content-transfer-encoding: 7bit\n";
mail($emailTo, $emailSubject, $emailBody, $emailHeader);
# Include message in the success page and dump it to the browser
$successPage = '<html><head><title>Success</title></head><body>Form submitted successfully. It will be reviewed soon.</body></html>';
$successPage = str_replace('<!--FIELDVALUE:id-->', $FTGid, $successPage);
$successPage = str_replace('<!--FIELDVALUE:feedback1-->', $FTGfeedback1, $successPage);
$successPage = str_replace('<!--FIELDVALUE:feedback2-->', $FTGfeedback2, $successPage);
$successPage = str_replace('<!--FIELDVALUE:feedback3-->', $FTGfeedback3, $successPage);
$successPage = str_replace('<!--FIELDVALUE:feedback4-->', $FTGfeedback4, $successPage);
$successPage = str_replace('<!--FIELDVALUE:feedback5-->', $FTGfeedback5, $successPage);
$successPage = str_replace('<!--FIELDVALUE:submit-->', $FTGsubmit, $successPage);
$successPage = str_replace('<!--FIELDVALUE:reset-->', $FTGreset, $successPage);
echo $successPage;
exit;
?>
Bookmarks