0

エニオンはこれを手伝ってもらえますか?

私はphpを初めて使用し、簡単な連絡フォームの検証ルールを開発しようとしています。

フォームの他の部分が検証に失敗したときにselectfieldsのリセットを停止するにはどうすればよいですか?

コードは以下のとおりです。

<?php


    $error      = '';
    $title      = '';
    $firstname  = '';
    $surname    = '';
    $email      = '';
    $phone      = '';
    $comments   = '';
    $how        = '';
    $verify     = '';

    if(isset($_POST['contactus'])) {

    $title      = $_POST['title'];
    $firstname  = $_POST['firstname'];
    $surname    = $_POST['surname'];
    $email      = $_POST['email'];
    $phone      = $_POST['phone'];
    $comments   = $_POST['comments'];
    $how        = $_POST['how'];
    $verify     = $_POST['verify'];

    ini_set("sendmail_from", $email_from, "enquiries@blah.com");


    // Errors

    if(trim($title) == '') {
        $error = '<div class="error_message">Please enter your Title.</div>';
    }
    else if(trim($firstname) == '') {
        $error = '<div class="error_message">Please enter your First name.</div>';
    }
    else if(trim($surname) == '') {
        $error = '<div class="error_message">Please enter your Surname.</div>';
    }
    else if(!validEmail($email)){
    $error = '<div class="error_message">Please enter a valid email address.</div>';
    $email = '';
    }
    if($error == '') {

        if(get_magic_quotes_gpc()) {
            $comments = stripslashes($comments);
        }


    $address = "enquiries@blah.com";

    $e_subject = 'Care at Home Enquiry from ' . $title . $surname . '.';

    $e_body = "You have been contacted by $name with regards to an Advantage Nurses general enquiry, contact details and message are as follows.\r\n\n";
    $e_content = "Title: " . $title  .
                 "\r\n\nFirst name:" . $firstname  .
                 "\r\n\nSurname: " . $surname  .  
                 "\r\n\nEmail: " . $email  . 
                 "\r\n\nPhone: " . $phone  . 
                 "\r\n\nEnquiry: " . $comments .
                 "\r\n\nHow Did You Hear About Us: " . $how;

    //$e_reply = "\r\n\nYou can contact $name via email, $email or via phone $phone";

    $msg = $body . $e_content . $e_reply;

    if(mail($address, $e_subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n"))
    {
        // Email has sent successfully, echo a success page.

         echo "<div id='succsess_page'>";
         echo "<h1>Enquiry Submitted.</h1>";
         echo "<p>Thank you <strong>$title $surname</strong>, your enquiry has been submitted to us.<br /><br /> A member of our Team will contact you within 48 hours.</p>";
         echo "</div>";
     } else echo "Error. Mail not sent";

    }
}

    if(!isset($_POST['contactus']) || $error != '') // Do not edit.
    {

?>

4

3 に答える 3

0

フォームで、これらの変数の値を確認する必要があります。例えば:

<select name="title" class="selectfield" id="title" value="">
    <option value="">Please Select...</option>
    <option value="Mr" <?php if(isset($title) && $title == 'Mr') echo 'selected'; ?>>Mr</option>
    <option value="Mrs" <?php if(isset($title) && $title == 'Mrs') echo 'selected'; ?>>Mrs</option>
    <option value="Miss" <?php if(isset($title) && $title == 'Miss') echo 'selected'; ?>>Miss</option>
    <option value="Ms" <?php if(isset($title) && $title == 'Ms') echo 'selected'; ?>>Ms</option>
    <option value="Dr" <?php if(isset($title) && $title == 'Dr') echo 'selected'; ?>>Dr</option>
    <option value="Rev" <?php if(isset($title) && $title == 'Rev') echo 'selected'; ?>>Rev</option>
    <option value="Sir" <?php if(isset($title) && $title == 'Sir') echo 'selected'; ?>>Sir</option>
</select>

または、必要に応じてJQueryを使用して正しいオプションを選択することもできます。

于 2012-12-03T16:42:44.883 に答える
0

選択オプションのHTMLで、次のようなものを試してください。

<option value="Mr." <? if($title == "Mr.") echo "selected"; ?>>Mr.</option>

これにより、値が「Mr」のoption場合が自動的に選択されます。$_POST

于 2012-12-03T16:42:46.710 に答える
0

オプション値を配列で定義すると、はるかに洗練されます。

$titles = array('Mr', 'Miss', 'Mrs');

HTML内:

<select name="title" id="title">
    <?php foreach($titles as $title): ?>

    <option value="<?php echo $title; ?>" if(isset($_POST['title']) $_POST['title'] == $title) echo 'selected="selected"';><?php echo $title; ?></option>

    <?php endforeach; ?>
</select>

警告1:コードはXSSに対して脆弱です。生のユーザー入力をページに出力して、パススルーしないでくださいhtmlspecialchars()

警告2:メールヘッダーインジェクション攻撃に対しても脆弱です。ヘッダーに挿入することを検証する$emailか、ヘッダーにユーザー入力をまったく挿入しないようにする必要があります。

これらのため、質問からあなたのサイトのリンクを削除しました。脆弱性が修正されるまで、ページをオフラインにすることをお勧めします。

于 2012-12-03T16:46:27.903 に答える