开发者

Unexpected $end in PHP file

I'm working on a PHP contact form, but I can't get it to work. I get the following error in the Apache server log, running on an Ubuntu Server VM:

PHP Parse error:  syntax error, unexpected $end in /home/matthew/Sites/contactFormResponse.php on line 75, referer: http://192.168.1.4/contactForm.php

From googling this error, it sounds like it's normally caused by either using the short PHP tag when the server's not set up to recognise them, or by having a block of code that isn't closed correctly. But as far as I can see that isn't the case here - as far as 开发者_JS百科I can see it's all closed correctly. The line it refers to is one line past the end of the file.

Here's the PHP code:

 <?php
                                    error_reporting(E_ALL);
                                    // Define variables to hold the name, email address and message, and import the information into the variables
                                    $name = $_POST['NameInput'];
                                    $email = $_POST['EmailAddress'];
                                    $telno = $_POST['ContactNumber'];
                                    $querytype = $_POST['QueryType'];
                                    $bookingstartdate = $_POST['BookingStartDay'] . $_POST['BookingStartMonth'] . $_POST['BookingStartYear'];
                                    $bookingenddate = $_POST['BookingEndDay'] . $_POST['BookingEndMonth'] . $_POST['BookingEndYear'];
                                    $message = $_POST['QueryText'];

                                    // Validate the inputs - send it if it's OK
                                    if(3 < strlen($name) && 3 < strlen($email))
                                    {
                                            $email_message = <<< EMAIL
                                                    Message from contact form at holidaychalet.co.uk
                                                    Name: $name
                                                    Email: $email
                                                    Contact Number: $telno
                                                    Query Type: $querytype
                                                    Booking Start Date: $bookingstartdate
                                                    Booking End Date: $bookingenddate
                                                    The message:
                                                    $message
                                                    EMAIL;
                                            $headers = "cc:me@myemailaddress.com\r\n";
                                            if(mail('matthew@localhost','Contact form email', $email_message, $headers))
                                            {
                                                    echo "Thanks for completing the form! I'll be in touch shortly!";
                                            }
                                            else
                                            {
                                                    echo "Something went wrong - please use the back button and try again";
                                            }
                                    }
                                    else
                                    {
                                            echo "You didn't complete the form fully enough! Please use go back using your web browser's back button";
                                    }
                            ?>


The closing identifier for the here document syntax must be at the start of the line without any indentation:

It is very important to note that the line with the closing identifier must contain no other characters, except possibly a semicolon (;). That means especially that the identifier may not be indented, and there may not be any spaces or tabs before or after the semicolon. It's also important to realize that the first character before the closing identifier must be a newline as defined by the local operating system.

So in your case:

                                            $email_message = <<< EMAIL
                                                    Message from contact form at holidaychalet.co.uk
                                                    Name: $name
                                                    Email: $email
                                                    Contact Number: $telno
                                                    Query Type: $querytype
                                                    Booking Start Date: $bookingstartdate
                                                    Booking End Date: $bookingenddate
                                                    The message:
                                                    $message
EMAIL;


EMAIL;

cannot be indented. Heredoc syntax requires that the closing identifier be at the start of the line, and that includes no leading whitespace.


You are filling $email_message with a string which is marked to end with EMAIL;

This one must be in a single line.

Change it to:

                                            $email_message = <<< EMAIL
                                                    Message from contact form at holidaychalet.co.uk
                                                    Name: $name
                                                    Email: $email
                                                    Contact Number: $telno
                                                    Query Type: $querytype
                                                    Booking Start Date: $bookingstartdate
                                                    Booking End Date: $bookingenddate
                                                    The message:
                                                    $message
EMAIL;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜