2017-07-04 18 views
1

フォーム要素のaction属性に複数のURLを追加できるかどうかを知りたいですか?私は多くの人々がそれを求めていることを知っているが、私が追加しているものは:php selfとmailtoアクションである。これはフィードバック形式なので、いずれかのフィードバックを送信すると、PHPの検証をチェックして、送信ボタンをクリックすると同時に電子メールを送信する必要があります。しかし、私はそれをテストしましたが、[送信]ボタンをクリックすると、エラーページが表示されました。誰も私を助けてくれる?Multipe action = ""属性url

HTML:

<form action="<?php echo htmlspecialchars($_server['php_self']);?> 
    , mailto:[email protected]" method="post" name="feedbackForm" id="ff" class="feedback"> <label for="first">First Name:</label> 
    <input type="text" id="first" name="fname" class="namef" placeholder="First Name" required="required"/><span class="error"><?php echo $fnameErr;?> 
    </span><br/> 
    <label for="last">Last Name:</label> 
    <input type="text" id="last" name="lname" class="namel" placeholder="Last Name" required="required"/><span class="error"><?php echo $lnameErr;?> 
    </span><br/> 
    <label for="mail">Email:</label> 
    <input type="email" id="mail" name="email" class="u-email" placeholder="any email is fine!" required="required"/><span class="error"><?php echo 
    $emailErr;?> 
    </span><br/> 
    <label for="yearLevel">Year Level:</label> 
    <select name="yearLevel" id="yearLevel" onchange="MM_jumpMenu('parent',this,0)"> 
     <option>Year 8</option> 
     <option>Year 9</option> 
     <option>Year 10</option> 
     <option>Year 11</option> 
     <option>Year 12</option> 
     <option>Uni Student</option> 
     <option>Other</option> 
    </select> 
    <label for"comment">Comment:</label> 
    <textarea id="comment" name="comment" class="userComment" rows="12" cols="" "55" "> 
    </textarea><br/><br/> 
    <input type="submit" name="submitFeed" id="subff" class="sub" onclick="ask()" style="margin-left:20%;"/> 
</form> 

PHP:確認のため

<?php 
//feedback form validation code 
//start 

//variables 
$fnameErr = $lnameErr = $yearleErr = $emailErr = ""; 
$firstName = $lastName = $comment = $yearLevel = $email = ""; 


//the function of validation 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["fname"])) { 
     $fnameErr = "* Your first name is required!"; 
    } else { 
     $firstName = test_input($_POST["fname"]); 
     // check if name only contains letters and whitespace 
     if (!preg_match("/^[a-zA-Z]*$/", $firstName)) { 
      $fnameErr = "* Only letters and white space allowed!"; 
     } 
    } 

    if (empty($_POST["lname"])) { 
     $lnameErr = "* Your last name is required!"; 
    } else { 
     $lastName = test_input($_POST["lname"]); 
     if (!preg_match("/^[a-zA-Z]*$/", $lastName)) { 
      $lnameErr = "* Only letters and white space allowed!"; 
     } 
    } 

    if(empty($_POST["comment"])) { 
     $comment = "* the comment box is required!"; 
    } else { 
     $comment = test_input($_post["comment"]); 
    } 


    if (empty($_POST["email"])) { 
     $emailErr = "* Your email is required!"; 
    } else { 
     $email = test_input($_POST["email"]); 
     if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
      $emailErr = "* Invalid Email Format!"; 
     } 
    } 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
//end 
?> 

JSスクリプトユーザーがクリックを提出します。フォームには意味があります。

<script type="text/javascript"> 
//confrim before submitting. 
function ask() { 
    var box = confirm("Are you sure you want to send this feeback? If yes 
that you are sure click ok or if not then click canel to edit it."); 
    if (box == true) { 
     document.getElementById('firstPart').style.display = "none"; 
     document.getElementById('nextPart').style.display = "block"; 
     console.log("Thanks for sending your feedback"); 
     return true; 
    } else { 
     console.log("edit!"); 
     return false; 
    } 
} 

</script> 
+1

あなたが複数のURLにのを与えることができないんあなたがメールを送信したい場合は、あなたの関数内でそれを行うことができることを意味しません – Nawin

答えて

1

あなたは、フォームのアクションで複数のアクションを追加することができませんでした、あなたは、PHPファイルにフォームを送信する必要があり、その後、検証した後、PHPでメールを送信しmail関数やphpmailerのような他のライブラリなど

1

単純な回答:いいえ、複数のアクションをタグに追加することはできません。どちらを選択するかはどのように区別しますか?

フォーム選択(またはその他)の設定に応じて異なるアクションを選択する必要がある場合は、Javascriptを使用してフォームの新しい動作を設定します。

mail PHP関数を使用して、検証に合格したときにPHPスクリプトからメールを送信します。

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" name="feedbackForm" id="ff" class="feedback"> 

、その後、PHP

mail('[email protected]', 'Subject', 'Body', optionalHeaders); 
0

あなたはそれを行うことはできませんが、あなたはask()

、のような内部の mailtoを呼び出すことができます

などフォームアクションを変更、

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" ...> 
    .... 
</form> 
関連する問題