我的表单php无法正常工作,我无法弄清楚我哪里出错了

时间:2012-06-28 20:48:01

标签: php forms sendmail html-email

我对这一切都很陌生,但我已经创建了一个表单,这就是我写的发送它的内容。我在这里使用了“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();

?>

请帮我找到我做错的事,我这里几乎不是初学者。提前谢谢!

2 个答案:

答案 0 :(得分: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();
}

它已修复。完整的固定代码(相当草率,我没有清理它):[link]

答案 1 :(得分: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;

?>