Current location: Hot Scripts Forums » Programming Languages » PHP » How to create a button on profile to send email with a form?


How to create a button on profile to send email with a form?

Reply
  #1 (permalink)  
Old 11-03-11, 01:51 AM
intelgy1 intelgy1 is offline
New Member
 
Join Date: Nov 2011
Posts: 1
Thanks: 0
Thanked 0 Times in 0 Posts
How to create a button on profile to send email with a form?

Hello everyone,

I'm new to PHP and creating an advertising website for massage therapists. On the profile page I'm creating a button so anyone can click on to send the advertiser an email.

I created a page called profile_sendemail.php which contains the form to send the email and here is the code:

PHP Code:

<?php

// Start_session, check if user is logged in or not, and connect to the database all in one included file
include_once("scripts/checkuserlog.php");
// Include the class files for auto making links out of full URLs and for Time Ago date formatting
include_once("wi_class_files/autoMakeLinks.php");
include_once (
"wi_class_files/agoTimeFormat.php");
// Create the two new objects before we can use them below in this script
$activeLinkObject = new autoActiveLink;
$myObject = new convertToAgo;
?>

<?php
// Now let's initialize vars to be printed to page in the HTML section so our script does not return errors
// they must be initialized in some server environments
$id "";
$firstname "";
$middlename "";
$lastname "";
$email "";

// If coming from category page
if ($_GET['id']) {
   
     
$id $_GET['id'];

} else if (isset(
$_SESSION['id'])) {
   
     
$id $_SESSION['id'];

} else {
   
      
$id $_SESSION['id'];
   
   include_once 
"index.php";
   exit();
}
$id mysql_real_escape_string($id);
$id eregi_replace("`"""$id);
$sql mysql_query("SELECT * FROM myMembers WHERE id='$id'");

while(
$row mysql_fetch_array($sql)){
    
    
$id $row["id"];
    
$firstname $row["firstname"];
    
$lastname $row["lastname"];
   

// close while loop

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_sheet "default";
?>


<?php
//////////////////////////  MECHANISM TO SEND EMAILS ////////////////////////////////////////////////


if(isset($_POST['email'])) {
    
    
// EDIT THE 2 LINES BELOW AS REQUIRED
    
$email_to "$email";
    
$email_subject "New appointment request on MassageTherapistsList.com";
    
    
    function 
died($error) {
        
// your error code can go here
        
echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo 
"These errors appear below.<br /><br />";
        echo 
$error."<br /><br />";
        echo 
"Please go back and fix these errors.<br /><br />";
        die();
    }
    
    
// validation expected data exists
    
if(!isset($_POST['name']) ||
        !isset(
$_POST['email']) ||
        !isset(
$_POST['comments'])) {
        
died('We are sorry, but there appears to be a problem with the form you submitted.');      
    }
    
    
$name $_POST['name']; // required
    
$email_from $_POST['email']; // required
    
$comments $_POST['comments']; // required
    
    
$error_message "";
    
$email_exp '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
  if(!
preg_match($email_exp,$email_from)) {
    
$error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }
    
$string_exp "/^[A-Za-z .'-]+$/";
  if(!
preg_match($string_exp,$name)) {
    
$error_message .= 'The Name you entered does not appear to be valid.<br />';
  }
  if(
strlen($comments) < 2) {
    
$error_message .= 'The Comments you entered do not appear to be valid.<br />';
  }
  if(
strlen($error_message) > 0) {
    
died($error_message);
  }
    
$email_message "Form details below.\n\n";
    
    function 
clean_string($string) {
      
$bad = array("content-type","bcc:","to:","cc:","href");
      return 
str_replace($bad,"",$string);
    }
    
    
$email_message .= "Name: ".clean_string($name)."\n";
    
$email_message .= "Email: ".clean_string($email_from)."\n";
    
$email_message .= "Comments: ".clean_string($comments)."\n";
    
    
// create email headers
$headers 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' phpversion();
@
mail($email_to$email_subject$email_message$headers); 
?>
 
<!-- include your own success html here -->
 
Thank you for contacting us. We will be in touch with you very soon.
 
<?php


And the profile.php page I added the link with the following PHP function:

if (empty(
$_SESSION['id'])) {
 
$_SESSION['id'] = $id;
} else {
 
$_SESSION['id']++;
}
?>

<a href="profile_sendmail.php?id=".$id."<?php echo htmlspecialchars(SID); ?>">Send Email</a>
However, when I click on "Send Email" I get the following url without id:

http://domain.com/profile_sendmail.php?id=

And of course a page Not Found error instead of the email form.

Any ideas what would be the best way to get the results I want?

Last edited by UnrealEd; 11-05-11 at 07:11 AM. Reason: added [php] wrapper
Reply With Quote
  #2 (permalink)  
Old 11-05-11, 07:16 AM
UnrealEd's Avatar
UnrealEd UnrealEd is offline
Community Liaison
 
Join Date: May 2005
Location: Antwerp, Belgium
Posts: 3,165
Thanks: 4
Thanked 25 Times in 25 Posts
that's because you're referencing a php-variable ($id) outside a php environment (in your anchor statement). Thry using this code snippet:
PHP Code:

<a href="profile_sendmail.php?id=<?=$id?>">Send Email</a>
I also removed <?php echo htmlspecialchars(SID); ?> because I found no refference to any SID constant in this script. If you do need it, use it like this:
PHP Code:

<a href="profile_sendmail.php?id=<?=$id.htmlspecialchars(SID)?>">Send Email</a>
Your original anchor statement actually ruined the html output of the link. A result would have looked like this:
HTML Code:
<a href="profile_sendmail.php?id=".$id."something">Send Email</a>
__________________
"Good judgement comes from experience, and experience comes from bad judgement." - Fred Brooks

Reply With Quote
Reply

Bookmarks

Tags
email, form, profile


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
PHP Form to Excel then send as email attachment Moloch PHP 14 01-26-11 03:43 AM
Freeze columns in a table Rita Negi Script Requests 1 09-01-09 08:23 AM
Submit button....can it send info to my email w/out the use of php???? lisa33 HTML/XHTML/XML 7 10-17-06 11:46 AM
Preventing email form abuse LunarOrbit Perl 3 10-04-03 09:55 PM


All times are GMT -5. The time now is 08:53 AM.
vBulletin® Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.