-3

私はこれらすべてにかなり慣れていませんが、フォームを作成しました。これは私がそれを送信するために書いたものです。ここでは、実際のアドレスの代わりに「example@gmail.com」を使用しました

<?php

/* Set e-mail recipient */
$myemail  = "example@gmail.com";

/* Check all form inputs using check_input function */
$names = check_input($_POST['names'], "Please return to our Application Form and enter your and your future spouse's names.");
$weddingtype = check_input($_POST['weddingtype'], "Please return to our Application Form and fill in what kind of wedding you will be having.");
$religioussect = check_input($_POST['religioussect'], "Please return to our Application Form and tell us about your religion and wedding traditions.");
$dateone = check_input($_POST['dateone'], "Please return to our Application Form and give us the date for at least one event.");
$eventone = check_input($_POST['eventone'], "Please return to our Application Form and list at least one event.");
$locationone = check_input($_POST['locationone'], "Please return to our Application Form and give us the location for at least one event.");
$durationone = check_input($_POST['durationone'], "Please return to our Application Form and give us the duration of at least one event.");
$typeone = check_input($_POST['typeone'], "Please return to our Application Form and tell us whether you would like video, photo or both for at least one event.");
$datetwo = $_POST['datetwo'];
$eventtwo = $_POST['eventtwo'];
$locationtwo = $_POST['locationtwo'];
$durationtwo = $_POST['durationtwo'];
$typetwo = $_POST['typetwo'];
$datethree = $_POST['datethree'];
$eventthree = $_POST['eventthree'];
$locationthree = $_POST['locationthree'];
$durationthree = $_POST['durationthree'];
$typethree = $_POST['typethree'];
$datefour = $_POST['datefour'];
$eventfour = $_POST['eventfour'];
$locationfour = $_POST['locationfour'];
$durationfour = $_POST['durationfour'];
$typefour = $_POST['typefour'];
$guests1 = check_input($_POST['guests1'], "Please return to our Application Form and tell us how many guests will attend at least one event.");
$guests2 = $_POST['guests2'];
$guests3 = $_POST['guests3'];
$guests4 = $_POST['guests4'];
$concerns = $_POST['concerns'];


if(!isset($_POST['submit'])){

$subject = "Quote Application";


/*Message for the e-mail */
$message = "Hello!

Another happy couple has filled out a Quote Application Form :D Hooray!

Their names are $names.

What sort of wedding are they having?
'$weddingtype'.

What religious sect and wedding traditions are they following?
'$religioussect'.

Now for their wedding events... Ooh boy!

1.  $dateone    
$eventone
$durationone
$typeone
Estimated guests: $guests1

$locationone

2.  $datetwo    
$eventtwo
$durationtwo
$typetwo
Estimated guests: $guests2

$locationtwo

3.  $datethree  
$eventthree
$durationthree
$typethree
Estimated guests: $guests3

$locationthree

4.  $datefour 
$eventfour
$durationfour
$typefour
Estimated guests: $guests4

$locationfour


Any concerns the couple have follow here:
'$concerns'

You better be ready to get to work now!
And also, have a really good day :)
";

/* Functions used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
    show_error($problem);
}
return $data;
}


function show_error($myError)
{
?>


<b>We apologize for the inconvenience, an error occurred.</b><br />
<?php echo $myError; ?>


<?php
exit();
}

/* Send the message using mail() function */
mail($myemail, $subject, $message);

/* Redirect visitor to the thank you page */
header('Location: thanks.html');
exit();

?>

私が間違っていることを見つけるのを手伝ってください、私はここではほとんど初心者ではありません。前もって感謝します!

4

2 に答える 2

2

PHP Parse error:syntax error, unexpected $end in /var/www/test.php on line 133

PHP の最後の終了タグの前に欠落している '}' を追加して修正します。?>

それは明らかにします:PHP Fatal Error: Call to undefined function check_input() in /var/www/test.php on line 7

これを一番上に移動します:

function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
    show_error($problem);
}
return $data;
}

もう一方をもう一方の関数の真下に移動する必要があることを明らかにします。

function show_error($myError)
{
?>
<b>We apologize for the inconvenience, an error occurred.</b><br />
<?php echo $myError; ?>
<?php
exit();
}

そして、それは修正されました。完全な修正コード (ずさんで、クリーンアップはしていません): [リンク]

于 2012-06-28T20:59:06.220 に答える
0

コードのクリーンアップと論理エラーの修正を支援しようとしました。私はこのコードをテストしていないので、必ずテストしてください。また、 などの使用されている言語構造を調べることもお勧めします。このforeachような変数の長いリストを書き出すと、デバッグが非常に困難になる可能性があるためです。

<?php

if(! isset($_POST['submit'])) exit;

// Error messages
$error_messages = array(
    'names'         => 'Please return to our Application Form and enter your and your future spouse\'s names.',
    'weddingtype'   => 'Please return to our Application Form and fill in what kind of wedding you will be having.',
);

$errors = array();

foreach ($_POST as $key => &$value) {
    // If value is empty and error message exists, add error to the list
    if (empty($value) AND in_array($key, $error_messages)) {
        $errors[] = $error_messages[$key];
        continue;
    }

    // Variable variables, worth learning. $_POST['key'] becomes $key in your script.
    ${$key} = htmlspecialchars(trim($value), ENT_QUOTES, 'UTF-8');
}

// Errors existed, let's show them all
if (! empty($errors)) {
    echo '<b>We apologize for the inconvenience but there were errors:</b><br />';

    foreach ($errors as &$error) {
        echo $error . '<br />';
    }

    exit;
}

// All good, let's send
$email  = "example@gmail.com";
$subject = "Quote Application";

$message = "
    Hello!

    Another happy couple has filled out a Quote Application Form :D Hooray!

    Their names are $names.

    What sort of wedding are they having?
    '$weddingtype'.

    What religious sect and wedding traditions are they following?
    '$religioussect'.

    Now for their wedding events... Ooh boy!

    1.  $dateone    
    $eventone
    $durationone
    $typeone
    Estimated guests: $guests1

    $locationone

    2.  $datetwo    
    $eventtwo
    $durationtwo
    $typetwo
    Estimated guests: $guests2

    $locationtwo

    3.  $datethree  
    $eventthree
    $durationthree
    $typethree
    Estimated guests: $guests3

    $locationthree

    4.  $datefour 
    $eventfour
    $durationfour
    $typefour
    Estimated guests: $guests4

    $locationfour


    Any concerns the couple have follow here:
    '$concerns'

    You better be ready to get to work now!
    And also, have a really good day :)
";

mail($email, $subject, $message);

header('Location: thanks.html');
exit;

?>
于 2012-06-28T21:13:31.480 に答える