0

これに似た質問をいくつか見てきましたが、私は 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>
4

3 に答える 3

0

問題は$_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';
}

お役に立てれば。

于 2013-03-05T04:33:00.943 に答える
-1

ラジオボタンの名前と値を逆にしてみてください

<input type="radio" name="to" value="Eval CH">Email Blah<br>
<input type="radio" name="to" value="Eval ELL">Email Sigh<br>
于 2013-03-05T02:43:16.800 に答える
-1

ラジオ ボタンには、共通の名前と適切な値が必要です。それらは次のようになります。

<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']) { }投稿するときは、人間かどうかをチェックするだけでなく、コードのそのセクション全体を確認する必要があります。

于 2013-03-05T02:41:09.967 に答える