если флажок радио установлен, отправьте разные поля электронной почты - PullRequest
0 голосов
/ 18 августа 2011
<form method="post" action="" id="infoform">
<label for="first">
    First Name</label>
<input type="text" name="first" id="first" class="field validate[required]">
</br>
<label for="surname">
    Last Name</label>
<input type="text" name="surname" id="surname" class="field validate[required]"> </br>
    <label for="email">
        Email</label>
    <input type="text" name="email" id="email" class=" field email validate[required,custom[email]]">
        </br>
        <div class="radios">
            <input id="test2" checked="checked" type="radio" name="message" value="register" />
        Register for Updates</input>
    <input id="test1" type="radio" name="message" value="msgs" />
    Send a Message</input>
</div>
<div class="msg">
    <label for="message" id="messagelabel">
        Message</label>
    <textarea type="text" name="message" id="message"></textarea>
</div>
<input id="submit" type="submit" value=""><div class="test3">
    <a class="sbmt">Register</a></div>
    <div class="test4">
        <a class="sbmt">Send</a></div>
</input>
</form>

Если установлен флажок «test1», появляется сообщение div msg.Затем он отправляется через ajax на сценарий php электронной почты:

<?php
    $EmailTo = "matt@explosivetitles.com";
    $adminSubject = "Civitas Message";

    $firstName = Trim(stripslashes($_POST['first']));
    $Surname = Trim(stripslashes($_POST['surname'])); 
    $Email = Trim(stripslashes($_POST['email'])); 
    $Message = Trim(stripslashes($_POST['message'])); 

    $adminheaders = 'From: "Civitas website" <info@civitas.com>';

    $adminBody .= "First Name: ";
    $adminBody .= $firstName;
    $adminBody .= "\n";
    $adminBody .= "Surname: ";
    $adminBody .= $Surname;
    $adminBody .= "\n";
    $adminBody .= "Email: ";
    $adminBody .= $Email;
    $adminBody .= "\n";
    $adminBody .= "Message: ";
    $adminBody .= $Message;
    $adminBody .= "\n";


    $adminMail = mail($EmailTo, $adminSubject, $adminBody, $adminheaders);


    if ($adminMail){
        echo "true";
    }
    else{
      echo "false";
    }
?>

Однако я хочу, чтобы часть сообщения «message» отправлялась только в том случае, если отображается окно сообщения.Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

PHP не смотрит на id элемента, вместо этого, когда отправляется метод POST или GET, он смотрит на атрибут name. В коде, который вы написали, у вас есть два элемента ввода, textarea и radio input с тем же именем, "message". Когда оба отправляются, переменная $_POST становится массивом и использует атрибут name в качестве индекса для переданного значения, а массивы PHP не могут иметь повторяющиеся индексы, поэтому для преодоления этой проблемы вы переименовываете один. Для вашего radio input я предлагаю установить атрибут name на type.

<?php
    $send           = "matt@explosivetitles.com";
    $subject        = "Civitas Message";
    $details        = array (
        "first"     => @$_POST["first"],
        "surname"   => @$_POST["surname"],
        "email"     => @$_POST["email"],
        "message"   => @$_POST["message"]
    );
    foreach ($details as $index => $value) {
        $details[$index] = trim ( stripslashes ($value));
    }
    if (@$_POST["type"] == "register") {
        // Whatever happens when they select "register"
    } else if (@$_POST["type"] == "msgs") {
        $header     = "From 'Civitas website' <info@civitas.com>";
        $body       = $details["first"] . " " . $details["surname"] . " "
                    . "<" . $details["email"] . ">"
                    . "Message: \n"
                    . $details["message"];

        $mail       = mail ($send, $subject, $body, $header);
        if ($mail) {
            return true;
        } else {
            return false;
        }
    }
?>

Кроме того, ваш код причиняет мне боль, поэтому я переписал его.

0 голосов
/ 18 августа 2011

Вы можете сделать это:

$adminBody .= "First Name: ";
$adminBody .= $firstName;
$adminBody .= "\n";
$adminBody .= "Surname: ";
$adminBody .= $Surname;
$adminBody .= "\n";
$adminBody .= "Email: ";
$adminBody .= $Email;
$adminBody .= "\n";
if (isset($_POST['message'])) {
  $adminBody .= "Message: ";
  $adminBody .= $Message;
}
$adminBody .= "\n";

isset() проверит, существует ли переменная, и если да, вернет true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...