PHP tell a friend script to send URL of a page to an email address
We often want to send address or URL of a page to our friend or peers to visit (check) the page. How to send the URL without using any mail program or by going out and preparing an email with the URL? Here is a simple script to do that. You must have seen in many pages in different sites. This script is popularly known as Tell a friend script. This script uses two parts one is to display the html form and the other part is to process the script and sending back the visitor to the original page.
This script uses server side php form validation to check the user inputs and give proper error messages to the user.
If all form validations are passed then the details of the form submitted by the user is posted to the friend's email address using the php mail function.
The URL of the page is dynamically collected by using the php HTTP_REFERER function which collects the referrer of the page. This is done to maintain the portability of the script. This way the code can be used in any page or the form can be placed in any page and one common form processing page can be used to handle forms used in different pages. In such a case the form submit path is to be modify to take care the directory levels of the page relative to the main processing script.
Here is the code for the form. You can use the form shown at the end of this page to send this page url to your friend. Check once ...
You can see this from submits the details to tellck.php page. Here is the code to post the details to friends email address. Use the form at the end of this page to test the script.
You can keep the textarea of the form as not editable and keep a standard message. This will prevent spamers from using it to send their messages.
Here it is kept as fixed message and a fixed string for $y_msg variable. You can change this as per your requirement.
The script is modified to add IP address of the visitor at the form and at the end of the outgoing email.
Script is further modified to add one if condition to mail function to check and display message if mail function gave some problem to send the mail out.
If your script is not dependent on referrer then you can directly hard code or write the url of the page to the variable $ref.
$ref=@$HTTP_REFERER; // Change this line to
$ref="https://www.plus2net.com/php_tutorial/tell_friend.php"; // Add your URL here
tellck.php
<?Php
$status = "OK";
$msg="";
$y_email=$_POST['y_email'];
$y_name=$_POST['y_name'];
$f_email=$_POST['f_email'];
$f_name=$_POST['f_name'];
$y_msg=$_POST['y_msg'];
if (strlen($y_name) <2 ) { // checking your name
$msg .="Please enter your name<BR>";
$status= "NOTOK";}
if(!filter_var($y_email,FILTER_VALIDATE_EMAIL)){ // Your email validation
$msg .="Your email address is not valid<BR>";
$status= "NOTOK";
}
if (strlen($f_name) <2 ) { // checking freinds name
$msg .="Please enter your friend's name<BR>";
$status= "NOTOK";}
if(!filter_var($f_email,FILTER_VALIDATE_EMAIL)){ // Friends email validation
$msg .="Your Friends Email address is not correct<BR>";
$status= "NOTOK";
}
if (strlen($y_msg) <2 ) { // checking Message details
$msg .="Please enter your message details<BR>";
$status= "NOTOK";}
if($status=="OK"){ // all validation passed
/////////// Sending the message starts here //////////////
$ip=$_SERVER['REMOTE_ADDR']; // Collect the IP address of visitor
$ref=@$HTTP_REFERER;
/////Message at the top of the page showing the url////
$header_message = "Hi $f_name n Your friend $y_name requested you to visit the page at n $ref n";
/// Body message prepared with the message entered by the user ////
$body_message =$header_message."n".$y_msg."n";
// IP address of visitor is added to message, you can remove it if not required.//
$body_message .="n n $ip n This is a free script from https://www.plus2net.com";
//// Mail posting part starts here /////////
$headers="";
//$headers = "Content-Type: text/html; charset=iso-8859-1n".$headers;
// Un comment the above line to send mail in html format
$headers4=$y_email; // Change this to change from address
$headers.="Reply-to: $headers4n";
$headers .= "From: $headers4n";
$headers .= "Errors-to: $headers4n";
$subject="Request to visit URL";
mail($f_email,$subject,$body_message,$headers);
////// Mail posting ends here ///////////
echo "<center><font face='Verdana' size='2' color=green>Thank You, Your message posted to $f_name</font></center>";
//////////// Sending the message ends here /////////////
}else{// display the error message
echo "<center><font face='Verdana' size='2' color=red>$msg <br><br><INPUT TYPE='button' VALUE='Back' onClick='history.go(-1);'></font></center>";
}
?>
To send BCC you can add these modifications
Modify the header part to add
$headers .= "bcc:siteadmin@sitename.com, admin@sitename.com\n";
Or you can use one more line of mail function with site admin address.