0

このサイトを参照点としてよく使用しますが、いくつかのコードに本当に苦労しています。

コールバック フォームを作成しています。最初はクライアント側の検証 (javascript) を作成しましたが、サーバー側の php 検証が必要であることにすぐに気付き、スクリプトに追加しようとしました。電子メールを受信したときに情報が表示されないことを除けば、機能的には機能します。検証を使用しなかった以前のように $name が情報を取得しない理由が本当に理解できません。コードは以下のとおりです。

PHP:

<?php

if (isset($_POST['Form'])) {
    import_request_variables("p", "z");
    $missingfields = array();
    $required = array("Name"=>"Name", "Company"=>"Company");

    while (list($var, $val) = each($required)) {
        if (isset($zForm[$var]) && $zForm[$var] != '') {
            // check this value further here
        } else {
            $missingfields[$var] = $val;
        }
    }

    if (count($missingfields)) {
        print "You missed out one or more fields:<br />";

        while(list($var, $val) = each($missingfields)) {
            print $val . "<br />";
        print "Please click back on your browser and enter the required fields.<br />";
        }
    } else {
        /* Subject and E-mail Variables */

$emailSubject = 'Call-back Request';
$webMaster = 'hello@microsoft.com';

/* Gathering Data Variables */

$name = $_POST['Form[Name]'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$company = $_POST['company'];
$message = $_POST['message'];

$body = <<<EOD
<br><hr><br>
Name: $name <br>
Email: $email <br>
Telephone: $telephone <br>
Company: $company <br>
Message: $message <br>
EOD;

$headers = "From: $email\r\n";
$headers .= "Content-type: text/html\r\n";
$success = mail($webMaster, $emailSubject, $body, $headers);

/* Results rendered as HTML */

$theResults = <<<EOD
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head>
    <title>Thankyou</title>
    <link href="style.css" rel="stylesheet" type="text/css" media="screen" />  
</head>
<body>
    <div id="content">
        <div id="contactthankyouheader">
            <h2>Thankyou for Contacting Us</h2></br>
        </div>
        <div id="contactthankyou">
            <p>Someone will be in contact with you shortly.</p>
        </div>
        <div id="contactthankyou2">
            <p>Please click the link below to return to the homepage.     
 </p>
        </div>
        <div id="contactthankyoulink">
            <a href="index.htm"><h4>Homepage</h4></a>
        </div>
    </div>
</body>
</html>
EOD;
echo "$theResults";
    }
}

?>

HTML:

<html>
<form method="post" action="callback-function.php">
Name: <input type="text" name="Form[Name]" /> (required)<br />
Company: <input type="text" name="Form[Company]" /> (required) <br />
Age: <input type="text" name="Form[Age]" /><br /><br />
Languages known:<br />
<input type="checkbox" name="Form[Languages][]" value="PHP" checked="checked">    
PHP</input>
para><input type="checkbox" name="Form[Languages][]" value="CPP"> C++</input>
<input type="checkbox" name="Form[Languages][]" value="Delphi"> Delphi</input>
<input type="checkbox" name="Form[Languages][]" value="Java"> Java</input>
<input type="submit" />
</form>
</html>
4

1 に答える 1

0

Formフォームから配列として送信されます。したがって、配列として扱う必要があります。

$name = $_POST['Form']['Name'];
$company = $_POST['Form']['Company'];

Emailそして、あなたはあなたのフォームにMessage..などを欠いています。

Languagesも配列であり、リストに implode を使用できます。

$Languages = implode(',', $_POST['Languages']);
于 2013-03-04T18:47:06.797 に答える