将字符串(电子邮件地址)从表单传递给PHP

时间:2014-12-14 19:19:53

标签: php variables contact-form

我有一个php联系表单,所有工作都很好,只有一个地址,但我试图修改我的脚本来处理下拉选择器,这可以选择一个收件人(发送到哪个电子邮件地址)。

以下是我到目前为止试图处理此问题的代码部分:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="recipient" id="recipient">
          <p class="text">
            Please select recipient<br>
            <select name="recipient" size="4"
           <?php if (isset($missing)) {
                echo 'value="'.htmlentities($_POST['recipient'], ENT_QUOTES).'"';
            } ?>
            >
                <option value="">Select...</option>
                <option value="1">Artistic Director</option>
                <option value="2">Site Administrator</option>
                <option value="3">Someone else</option>
            </select>
            </p>
          </form>  

            <?php if (array_key_exists('send', $_POST)) {
            // mail processing script
            if ('recipient' == 1) {
                $to = 'soandso@mail.com';
            }
            elseif('recipient' == 2) {
                $to = 'soandso@mail.com';
            }
            elseif('recipient' == 3) {
                $to = 'soandso@mail.com';
            }
            else {
                echo 'Sorry for no recipient';
            }

//then remainder code to process the rest which works fine

我确定我的问题在于调用/获取收件人的价值,但我无法确定从何处开始。

5 个答案:

答案 0 :(得分:1)

你想在这里做一些奇怪的事情。它应该是:

if ($_POST['recipient'] == 1) {
    $to = 'soandso@mail.com';
}
else if($_POST['recipient'] == 2) {
    $to = 'soandso@mail.com';
}
else if($_POST['recipient'] == 3) {
    $to = 'soandso@mail.com';
}
else {
    echo 'Sorry for no recipient';
}

当然'recipient'永远不会等于1,2或3。

我还注意到formselect具有相同的名称'收件人'。我不知道这是一个问题。但无论如何我想解决它。

答案 1 :(得分:0)

您的表单名称和选择名称是相同的。你也回应了select中的post值。我认为它是从你以前的输入框中遗留下来的。

试试这个;

<form action="" method="post" id="getEmail">
<p class="text">Please select recipient<br></p>
<select name="recipient" size="4">
        <option value="">Select...</option>
        <option value="1">Artistic Director</option>
        <option value="2">Site Administrator</option>
        <option value="3">Someone else</option>
     </select>
<input type='hidden' name='do' value='1'>
<input type='sumbit' value='Go'>
</form>  

<?php if (isset($_POST['do'])) {
            // mail processing script
            if ($_POST['recipient'] == 1)$to = 'email1';
else if($_POST['recipient'] == 2)$to = 'email2';
else if($_POST['recipient'] == 3)$to = 'email3';
else echo 'Sorry for no recipient';
}
//echo $to;
//to send mail
$sub = 'Mail from web Form';
$msg = 'My message';
$mail_status= mail($to, $sub, $msg);
if($mail_status){do something on success}; else {do something on failure};
?>

答案 2 :(得分:0)

此代码100%正常运行:

&#13;
&#13;
(function($) {
            
$('#recipient').on('click', function() {
  $('#recipient-form').submit();
});
            
})(jQuery);
&#13;
<div id="page">
<?php

$to = '';

if (isset($_POST['recipient'])) :

    
    // mail processing script
    if ($_POST['recipient'] == 1) {
        $to = 'recipient1';
    }
    else if($_POST['recipient'] == 2) {
        $to = 'reciipient2';
    }
    else if($_POST['recipient'] == 3) {
        $to = 'recipient3';
    }
    else {
        $to = 'Sorry for no recipient';
    }
    
    echo $to;
else : ?>


  <form action="" method="post" id="recipient-form">
    <select id="recipient" name="recipient" size="4">
      <option value="">Select...</option>
      <option value="1">Artistic Director</option>
      <option value="2">Site Administrator</option>
      <option value="3">Someone else</option>
    </select>
  </form>
</div>
 

<?php endif; ?>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

其中的页面(大部分)全部用于澄清目的:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="recipient-form">
            <p class="text">
                Please select recipient<br>
  <select id="recipient" name="recipient" size="4">
    <option value="">Select...</option>
    <option value="1">Artistic Director</option>
    <option value="2">Site Administrator</option>
    <option value="3">Someone else</option>
  </select>
  </p>
</form>

                <?php if (array_key_exists('send', $_POST)) {
                // mail processing script
                $to = '';

if ($_POST['recipient']) {


    // mail processing script
    if ($_POST['recipient'] == 1) {
        $to = '';
    }
    else if($_POST['recipient'] == 2) {
        $to = '';
    }
    else if($_POST['recipient'] == 3) {
        $to = '';
    }
    else {
        $to = 'Sorry for no recipient';
    }
}

    $subject = 'Feedback From Website';

    // list expected fields
    $expected = array('name', 'email', 'comments', 'subscribe');
    // set required fields
    $required = array('name', 'email', 'comments');

    // set additional headers
    $headers = 'From: ';

    // set the include
    $process = 'includes/process.inc.php';
    if (file_exists($process) && is_readable($process)) {
        include($process);
    }
    else {
        $mailSent = false;
        mail($me, 'Server Problem', "$process cannot be read", $headers);
    }
}
?>

            <?php 
            if ($_POST && isset($missing) && !empty($missing)) {
            ?>
            <p class="warning">Please complete the missing item(s) indicated.</p>
            <?php
            }
            elseif ($_POST && $link) {
            ?>
            <p class="warning">Sorry, Messages sent that contain links will not be sent.</p>
            <?php
            }
            elseif ($_POST && !$mailSent) {
            ?>
            <p class="warning">Sorry, there was a problem sending your message. Please try again later.</p>
            <?php
            }
            elseif ($_POST && $mailSent) {
            ?>
            <p class="success">Your message has been sent. Thank you for your message!</p>
            <?php } ?>


            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="contact" id="contact" onSubmit="MM_validateForm('name','','R','email','','RisEmail','comments','','R');return document.MM_returnValue">
            <p>
                <label for="name">Name: <?php
                if (isset($missing) && in_array('name', $missing)) { ?>
                <span class="warning">Please enter your name</span><?php } ?>
                </label>
                <input name="name" type="text" class="textInput" id="name" 
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['name'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>
              <p>
                <label for="email">Email: <?php
                if (isset($missing) && in_array('email', $missing)) { ?>
                <span class="warning">Please enter your email address</span><?php } ?>
                </label>
                <input name="email" type="text" class="textInput" id="email"
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['email'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>
              <p>
                <label for="comments">Message:<?php
                if (isset($missing) && in_array('comments', $missing)) { ?>
                <span class="warning">Please enter your message</span><?php } ?>
                </label>
                <textarea name="comments" id="comments" cols="45" rows="5"><?php 
                    if (isset($missing)) {
                        echo htmlentities($_POST['comments'], ENT_QUOTES);
                    } ?></textarea>
              </p>
              <p>

              <p class="text">
                Please check the box if you would like to sign up for our Mailing List!
                <input type="checkbox" name="subscribe" value="Yes"
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['subscribe'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>

              <p>
                <?php
                    require_once('recaptchalib.php');
                    $publickey = "6Lf3NdQSAAAAAOAwgPGRybLnY175X6k9PJ1F2vHx"; // you got this from the signup page
                    echo recaptcha_get_html($publickey);
                ?>
              </p>
              <p class="last">
                <input type="submit" name="send" id="send" value="Send Message">
              </p>
            </form>

希望现在拥有所有这些将有助于某人提出最佳解决方案!

答案 4 :(得分:0)

整个。我想/希望我们越来越近了:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" id="getEmail">
<p class="text">Please select recipient</p><br>
<select name="recipient" size="4">
        <option value="">Select...</option>
        <option value="1">Artistic Director</option>
        <option value="2">Site Administrator</option>
        <option value="3">Someone else</option>
     </select>
<input type='hidden' name='do' value='1'>
</form>  

<?php 
     if (array_key_exists('send', $_POST)) {
        if (isset($_POST['do'])) {
            // mail processing script
            if ($_POST['recipient'] == 1) { $to = ''; }
            else if($_POST['recipient'] == 2) { $to = ''; }
            else if($_POST['recipient'] == 3) { $to = ''; }
            else echo 'Sorry for no recipient';
            }
    echo $to;




    $subject = 'Feedback From Website';

    // list expected fields
    $expected = array('name', 'email', 'comments', 'subscribe');
    // set required fields
    $required = array('name', 'email', 'comments');

    // set additional headers
    $headers = 'From:';

    // set the include
    $process = 'includes/process.inc.php';
    if (file_exists($process) && is_readable($process)) {
        include($process);
    }
    else {
        $mailSent = false;
        mail($me, 'Server Problem', "$process cannot be read", $headers);
    }
}
?>

            <?php 
            if ($_POST && isset($missing) && !empty($missing)) {
            ?>
            <p class="warning">Please complete the missing item(s) indicated.</p>
            <?php
            }
            elseif ($_POST && $link) {
            ?>
            <p class="warning">Sorry, Messages sent that contain links will not be sent.</p>
            <?php
            }
            elseif ($_POST && !$mailSent) {
            ?>
            <p class="warning">Sorry, there was a problem sending your message. Please try again later.</p>
            <?php
            }
            elseif ($_POST && $mailSent) {
            ?>
            <p class="success">Your message has been sent. Thank you for your message!</p>
            <?php } ?>


            <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="contact" id="contact" onSubmit="MM_validateForm('name','','R','email','','RisEmail','comments','','R');return document.MM_returnValue">
            <p>
                <label for="name">Name: <?php
                if (isset($missing) && in_array('name', $missing)) { ?>
                <span class="warning">Please enter your name</span><?php } ?>
                </label>
                <input name="name" type="text" class="textInput" id="name" 
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['name'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>
              <p>
                <label for="email">Email: <?php
                if (isset($missing) && in_array('email', $missing)) { ?>
                <span class="warning">Please enter your email address</span><?php } ?>
                </label>
                <input name="email" type="text" class="textInput" id="email"
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['email'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>
              <p>
                <label for="comments">Message:<?php
                if (isset($missing) && in_array('comments', $missing)) { ?>
                <span class="warning">Please enter your message</span><?php } ?>
                </label>
                <textarea name="comments" id="comments" cols="45" rows="5"><?php 
                    if (isset($missing)) {
                        echo htmlentities($_POST['comments'], ENT_QUOTES);
                    } ?></textarea>
              </p>
              <p>

              <p class="text">
                Please check the box if you would like to sign up for our Mailing List!
                <input type="checkbox" name="subscribe" value="Yes"
                <?php if (isset($missing)) {
                    echo 'value="'.htmlentities($_POST['subscribe'], ENT_QUOTES).'"';
                    } ?>
                >
              </p>

              <p>
                <?php
                    require_once('recaptchalib.php');
                    $publickey = "6Lf3NdQSAAAAAOAwgPGRybLnY175X6k9PJ1F2vHx"; // you got this from the signup page
                    echo recaptcha_get_html($publickey);
                ?>
              </p>
              <p class="last">
                <input type="submit" name="send" id="send" value="Send Message">
              </p>
            </form>