Close
<?php
# Email Validation and Sending
$errors = [];
$missing = [];
// check if the form has been submitted
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'POST' ) {
// email processing script
$to = 'robert@nwtc-web.com' ;
$subject = 'Feedback from Japan Journey' ;
// list expected fields
$expected = [ 'name' , 'email' , 'comments' ];
// set required fields
$required = [ 'name' , 'email' , 'comments' ];
// create additional headers
$headers [] = 'From: Japan Journey<feedback@example.com>' ;
$headers [] = 'Content-Type: text/plain; charset=utf-8' ;
# Not loading via include - showing here for demo only...
// require('processmail_05.php');
// pattern to locate suspect phrases
$pattern = '/[\s\r\n]|Content-Type:|Bcc:|Cc:/i' ;
// check the submitted email address
$suspect = preg_match ( $pattern , $_POST [ 'email' ]);
if (! $suspect ) {
foreach ( $_POST as $key => $value ) {
// strip whitespace from $value if not an array
if (! is_array ( $value )) {
$value = trim ( $value );
}
if (! in_array ( $key , $expected )) {
// ignore the value, it's not in $expected
continue;
}
if ( in_array ( $key , $required ) && empty( $value )) {
// required value is missing
$missing [] = $key ;
$ $key = "" ;
continue;
}
$ $key = $value ;
}
}
// validate the user's email
if (! $suspect && !empty( $email )) {
$validemail = filter_input ( INPUT_POST , 'email' , FILTER_VALIDATE_EMAIL );
if ( $validemail ) {
$headers [] = "Reply-To: $validemail " ;
} else {
$errors [ 'email' ] = true ;
}
}
$mailSent = false ;
// go ahead only if not suspect, all required fields OK, and no errors
if (! $suspect && ! $missing && ! $errors ) {
// initialize the $message variable
$message = '' ;
// loop through the $expected array
foreach ( $expected as $item ) {
// assign the value of the current item to $val
if (isset($ $item ) && !empty($ $item )) {
$val = $ $item ;
} else {
// if it has no value, assign 'Not selected'
$val = 'Not selected' ;
}
// if an array, expand as comma-separated string
if ( is_array ( $val )) {
$val = implode ( ', ' , $val );
}
// replace underscores in the label with spaces
$item = str_replace ( '_' , ' ' , $item );
// add label and value to the message body
$message .= ucfirst ( $item ) . ": $val \r\n\r\n" ;
}
// limit line length to 70 characters
$message = wordwrap ( $message , 70 );
// format headers as a single string
$headers = implode ( "\r\n" , $headers );
// echo $to;
// echo $subject;
// echo $message;
// echo $headers;
// exit("86");
$mailSent = mail ( $to , $subject , $message , $headers );
if (! $mailSent ) {
$errors [ 'mailfail' ] = true ;
}
}
# END: require('processmail_05.php');
if ( $mailSent ) {
header ( 'Location: thank-you.php' );
exit;
}
} // close: if ($_SERVER['REQUEST_METHOD'] == 'POST'))
$tools = true ;
include( " { $_SERVER [ "DOCUMENT_ROOT" ]} /php/includes/header.php" );
?>
<main>
<h2><?= $folder_name ; ?>
<span><?= $file_name ; ?> </span>
</h2>
<h2>
HTML Form
<br>Check For Empty Control Values
<br>Check For Valid Email
<br>Check For Suspect Strings
<br>Controls Are Sticky
<br>Debug: Post, Errors, Missing
<br>Debug: Email: Message Body, Email: Headers
</h2>
<?php if (( $_POST && $suspect ) || ( $_POST && isset( $errors [ 'mailfail' ]))) { ?>
<p class="error">Sorry, your mail could not be sent.
Please try later.</p>
<?php } elseif ( $missing || $errors ) { ?>
<p class="error">Please fix the item(s) indicated.</p>
<?php } ?>
<form id="feedback" method="post">
<fieldset>
<legend><?= $folder_name ?> </legend>
<ol>
<li<?php if ( $missing && in_array ( 'name' , $missing )) echo ' class="error"' ; ?> >
<?php if ( $missing && in_array ( 'name' , $missing )) { ?>
<strong>Please enter your name</strong>
<?php } ?>
<label for="name">Name:</label>
<input name="name" id="name" type="text" class="formbox"
<?php if (isset( $name )) {
echo 'value="' . htmlentities ( $name , ENT_COMPAT , 'UTF-8' ) . '"' ;
} ?> >
</li>
<li<?php if (( $missing && in_array ( 'email' , $missing )) || (isset( $errors [ 'email' ]))) echo ' class="error"' ; ?> >
<?php if ( $missing && in_array ( 'email' , $missing )) { ?>
<strong>Please enter your email</strong>
<?php } elseif (isset( $errors [ 'email' ])) { ?>
<strong>Invalid email address</strong>
<?php } ?>
<label for="email">Email:</label>
<input name="email" id="email" type="text" class="formbox"
<?php if (isset( $email )) {
echo 'value="' . htmlentities ( $email , ENT_COMPAT , 'UTF-8' ) . '"' ;
} ?> >
</li>
<li<?php if ( $missing && in_array ( 'comments' , $missing )) echo ' class="error"' ; ?> >
<?php if ( $missing && in_array ( 'comments' , $missing )) { ?>
<strong>Please enter your comments</strong>
<?php } ?>
<label for="comments">Comments:</label>
<textarea name="comments" id="comments" cols="60" rows="8"><?php
if (isset( $comments )) {
echo htmlentities ( $comments , ENT_COMPAT , 'UTF-8' );
//echo $comments; //</textarea><h1>HELLO WORLD</h1><style>aside{display:none}</style><textarea>
} ?> </textarea>
</li>
<li>
<input name="send" id="send" type="submit" value="Send message">
</li>
</ol>
</fieldset>
</form>
<h2>Debug Code - Email: Message Body - Headers</h2>
<pre class="line-numbers">
<code class="language-php">
<?php
if ( $_POST && $mailSent ) {
echo "Email - Message Body:\n\n" ;
echo htmlentities ( $message , ENT_COMPAT , 'UTF-8' ) . "\n" ;
echo "Email - Headers:\n\n" ;
echo htmlentities ( $headers , ENT_COMPAT , 'UTF-8' );
}
?>
</code>
</pre>
<h2>Debug Code</h2>
<pre class="line-numbers">
<code class="language-php">
<?php if ( $_POST ) {
echo '$_POST: ' ;
print_r ( $_POST );
} ?>
<?php if ( $errors ) {
echo '$errors: ' ;
print_r ( $errors );
} ?>
<?php if ( $missing ) {
echo '$missing: ' ;
print_r ( $missing );
} ?>
<?php if (isset( $name )) echo '$name: ' . $name ; ?>
<?php if (isset( $email )) echo '$email: ' . $email ; ?>
<?php if (isset( $comments )) echo '$comments: ' . $comments ; ?>
</code>
</pre>
</main>
<?php
include( " { $_SERVER [ "DOCUMENT_ROOT" ]} /php/includes/sidebar.php" );
include( " { $_SERVER [ "DOCUMENT_ROOT" ]} /php/includes/footer.php" );
?>