2012-04-03 12 views
0

Also ich bin ziemlich neu in PHP (arbeitete mit ihm ein wenig, aber nicht viel). Ich habe eine Formularvorlage, die an meine E-Mail gesendet wird. Die Sache ist, ich möchte eine der Antworten in meiner Betreffzeile haben. Beispiel: Sie wählen Bug, ich möchte, dass mein Thema "Site: Bug" oder "Site: Other" ist, je nachdem, was sie für das Thema im Formular auswählen.PHP: Form Submission asnwer als Teil des Betreffs

<?php 
if(isset($_POST['email'])) {  

    $email_to = "[email protected]"; 
    $email_subject = "Site: Submission"; 

    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['subject']) || 
     !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 
    $subject = $_POST['subject']; // drop down menu 
    $comments = $_POST['comments']; // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][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 .= "Subject: ".clean_string($subject)."\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); 
    ?> 

    Thank you for you submission. 

    <?php 
    } 
    die(); 
    ?> 

Jede Hilfe wird geschätzt. Tut mir leid, wenn das eine einfache Frage ist, aber ich konnte keine Antwort mit Google finden.

Antwort

1

Vorausgesetzt, dass Sie die Inhalte von $subject in der E-Mail Thema möchten, setzen Sie diese so etwas wie kurz vor dem E-Mail-Header:

[...] 
if (isset($subject)) { 
    $email_subject = 'Site: '.$subject; 
} 

// create email headers 
[...] 
+0

Das !!!!! Danke, Bruder, es ist das If (Iset), das ich vermisste. Ich hatte den inneren Teil, aber es war nur für eine kurze Zeit eingefroren. Vielen Dank! – LiverpoolFTW

1

, wenn ich Sie richtig verstanden - fügen Sie es nur zum Thema:

$subject = $_POST['subject']; // drop down menu 
$email_subject = "Site: ".$subject; 

erste $subject dann fügen Sie es an die $email_subject

1

Sie die var $ EMAIL_SUBJECT gerade diese haben ändern mit $ EMAIL_SUBJECT =“ Seite? ˅ :". $ _POST ['varname'];

aber OFC-Validierung, wenn es keine Drop-Down-Menü ist wichtig

0

etwas hinzufügen so zu deiner Form.

<select name="subject"> 
    <option value="Site: Bug">Bug</option> 
    <option value="Site: Other">Other</option> 
</select> 
Verwandte Themen