Я видел ряд вопросов, подобных этому, но так как я новичок в PHP, мне трудно помещать функцию в нужное место. У меня есть что-то мощенное вместе в PHP и HTML, но я, кажется, что-то не хватает вокруг области $radio
. У кого-нибудь есть предложения?
<?php $name = $_POST['name']; $email = $_POST['email']; $radio = isset($_POST['radio']) ? $_POST['radio'] : 'default'; switch ($radio) { case 'Eval CH': $to = 'blah@blah.com'; break; case 'Eval ELL': $to = 'sigh@sigh.com'; break; } $message = $_POST['message']; $from = 'From: WAC Site'; $subject = 'WAC Contact Message'; $human = $_POST['human']; $body = "From: $name\n E-Mail: $email\n Message:\n $message"; if ($_POST['submit'] && $human == '4') { if (mail ($to, $subject, $body, $from)) { echo '<p>Your message has been sent!</p>'; } else { echo '<p>Something went wrong, go back and try again!</p>'; } } else if ($_POST['submit'] && $human != '4') { echo '<p>Either you are a robot, or you are very, very bad at math.</p>'; } ?>
Вот мой HTML:
<form method="post" action="contact_options.php"> <label>Name</label><br> <input name="name" placeholder="Type Here"><br> <br> <label>Email</label><br> <input name="email" type="email" placeholder="Type Here"><br> <br> <input type="radio" name="Eval CH" value="to">Email Blah<br> <input type="radio" name="Eval ELL" value="to">Email Sigh<br> <label>Message</label><br> <textarea name="message" placeholder="Type Here"></textarea><br> <br> <label>*What is 2+2? (Anti-spam)</label> <input name="human" placeholder="Type Here"><br /> <input id="submit" name="submit" type="submit" value="Submit"><br> </form>
Проблема в том, что $_POST['radio']
не существует, как у вас есть настройка формы. Только вещи с name=
передаются $_POST
.
Измените условие в вашем обработчике PHP следующим образом:
$radio = isset($_POST['Eval CH']) ? $_POST['Eval CH'] : $_POST['Eval ELL'];
Но у вас действительно есть 3 условия:
$_POST['Eval CH'] $_POST['Eval ELL'] None selcted
Так что действительно ваша стенография не работает здесь, потому что вам нужно
if elseif else
Таким образом, вам действительно нужно более сложное управление, например:
if (isset($_POST['Eval CH'])) { $to = 'blah@blah.com'; } elseif (isset($_POST['Eval ELL'])) { $to = 'sigh@sigh.com'; } else { $to = 'default@default.com'; }
Надеюсь это поможет.
Ваши переключатели должны иметь общее имя и правильное значение. Они должны выглядеть так:
<input type="radio" name="contact_option" value="Eval CH">Email Blah<br> <input type="radio" name="contact_option" value="Eval ELL">Email Sigh<br>
Затем в вашем посте вы можете заменить строку следующим образом:
$radio = isset($_POST['contact_option']) ? $_POST['contact_option'] : 'default';
Кроме того, if ($_POST['submit']) { }
следует обойти весь этот раздел кода при публикации, а не просто проверять, являетесь ли вы человеком.
попробуйте изменить имя и значение в своем переключателе
<input type="radio" name="to" value="Eval CH">Email Blah<br> <input type="radio" name="to" value="Eval ELL">Email Sigh<br>