3

現在機能しているフォームがありますが、「post」ファイルにphpコードを追加したいので、htmlフォームの一部のフィールドが必要です。そうでない場合、メッセージが表示されます。

現時点で私のhtmlコードはここにあります。

<form action="contact.php" method="post">
      <input type="text" class="main" name="cf_name" value="Name (Required)" size="31" />
      <br />
      <br />
      <input type="text" class="main" name="cf_company" value="Company" size="31" />
      <br />
      <br />
      <input type="text" class="main" name="cf_phone" value="Phone (Required)" size="31" />
      <br />
      <br />
      <input type="text" class="main" name="cf_email" value="Email (Required)" size="31" />
      <br />
      <br />
    <textarea type="text" name="cf_text0" cols="34" rows="3" class="main">Message</textarea>
      <br />
      <input type="image" src="images/send.jpg" height="16" width="41" border="0"
      alt="Submit Form" />
</form>

そしてここに私のphpコードがあります

<?php
$field_name = $_POST['cf_name'];
$field_company = $_POST['cf_company'];
$field_phone = $_POST['cf_phone'];
$field_email = $_POST['cf_email'];
$field_message = array($_POST["cf_text0"],);

$mail_to = 'callum@colmandesigns.co.nz';
$subject = 'A & J Print - Contact Form '.$field_name;

$field_message="From: {$field_name}
Company: {$field_company}
Phone: {$field_phone}
Email: {$field_email}
Message: {$field_message[0]}";


$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $field_message, $headers);

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for the message. We will contact you shortly.');
        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Message failed. Please, send an email to craig@colmandesigns.co.nz');
        window.location = 'index.html';
    </script>
<?php
}
?>

Name、Phone、Emailの各フィールドを必須にしたいのですが。

ありがとう、カルム

4

3 に答える 3

5

HTMLでは、入力タグを必須にするための「必須」属性を設定できます。例えば

<input type="text" id="someId" name="IP" placeholder="IP" required tabindex="1">

また

<input type="text" id="someId" name="IP" placeholder="IP" required="true" tabindex="1">

ただし、IEとSafariはこれまでこのタグをサポートしていなかったことを考慮してください。

于 2013-04-23T05:09:29.703 に答える
3

PHPの使用:

//Form Processor Code

$filled = true;
$required = array("cf_name", "cf_email", "cf_phone"); //all the required fields

//Cycle through each field and make sure its filled
foreach ($required as &$value) {
    if(!isset($_POST[$value])){$filled=false;}
}

//If there are any fields not filled out, send the user back to the form
if (!$filled){
    header("Location: http://mysite.com/form.php?error=true");
}

//Form Code

//Notify the user that the form needs to be filled completely
if(isset($_GET['error'])){
    echo "Sorry, but the form was not properly filled out.";
}

これに伴う問題は、戻る前にフォームの値をセッションに保存する必要があることです。そうしないと、ユーザーはフォーム全体を再入力する必要があります。Javascriptを使用する方がユーザーにとっては良いことですが、JSが無効になっているブラウザーには注意してください。

Javascriptの使用:

どちらかを使用

onBlur

ユーザーがフィールドへの入力または使用を終了したとき

onClick

ユーザーがフォームを送信しようとしたとき。

これに関する優れたチュートリアルはここにあります。

于 2012-04-18T23:32:09.117 に答える
2

//contact.php

<?php
    $filled = true;
    $required = array("cf_name", "cf_email", "cf_phone"); //all the required fields

    //Cycle through each field and make sure its filled

    foreach ($required as &$value) {

        if($_POST[$value]==""){
            $filled = false;
        }
    }

    //If there are any fields not filled out, send the user back to the form
    if (!$filled){
        header("Location: http://ajprint.co.nz/index.php?error=true"); 
    }

    else{
        $field_name = $_POST['cf_name'];
        $field_company = $_POST['cf_company'];
        $field_phone = $_POST['cf_phone'];
        $field_email = $_POST['cf_email'];
        $field_message = array($_POST["cf_text0"],);

        $mail_to = ''; //put your email
        $subject = 'A & J Print - Contact Form '.$field_name;

        $field_message="From: {$field_name}
        Company: {$field_company}
        Phone: {$field_phone}
        Email: {$field_email}
        Message: {$field_message[0]}";

        $headers = 'From: '.$field_email."\r\n";
        $headers .= 'Reply-To: '.$field_email."\r\n";

        $mail_status = mail($mail_to, $subject, $field_message, $headers);

        if ($mail_status) { 
            echo "
                <script language=\"javascript\" type=\"text/javascript\">
                    alert('Thank you for the message. We will contact you shortly.');
                    window.location = 'index.html';
                </script>";    
        }

        else {
            echo "
                <script language=\"javascript\" type=\"text/javascript\">
                    alert('Message failed. Please, send an email to craig@colmandesigns.co.nz');
                    window.location = 'index.html';
                </script>";
        }
    }

?>

//index.php

<form action="handler.php" method="post">
    <input type="text" class="main" name="cf_name" placeholder="Name (Required)" size="31" />
        <br />
        <br />
    <input type="text" class="main" name="cf_company" placeholder="Company" size="31" />
        <br />
        <br />
    <input type="text" class="main" name="cf_phone" placeholder="Phone (Required)" size="31" />
        <br />
        <br />
    <input type="text" class="main" name="cf_email" placeholder="Email (Required)" size="31" />
        <br />
        <br />
    <textarea type="text" name="cf_text0" cols="34" rows="3" class="main">Message</textarea>
        <br />
    <input type="image" src="images/send.jpg" height="16" width="41" border="0" alt="Submit Form" />
</form>

すべての「value」タグを「placeholder」に置き換えて、ユーザーがフィールドをクリアしなくても、入力済みとしてマークされないようにしました

于 2012-04-19T01:24:13.650 に答える