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


Passing Strings (email address) from form to PHP

我有一个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

我确定我的问题在于调用/获取收件人的值,但我不知道从这里开始

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

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具有相同的名称"收件人"。我不知道这是一个问题。但无论如何,我还是想解决这个问题。

这段代码 100% 工作:

(function($) {
            
$('#recipient').on('click', function() {
  $('#recipient-form').submit();
});
            
})(jQuery);
<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; ?>

为了澄清目的,希望其中的页面(大部分)完整

<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>

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

再次完整。 我认为/希望我们越来越近:

<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>

您的表单名称和选择名称相同。 此外,您正在回显选择中的帖子值。 我认为它是您之前的输入框遗留下来的。

试试这个;

<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};
?>