Пользовательский PHP и механизм выражений

Я создал сложную контактную форму php, которую хочу внедрить на свою страницу контактов, но по какой-то причине механизм выражений не распознает php-код, хотя я включил его в своих настройках.

Вот как выглядит форма. Я попробовал несколько вещей, таких как встраивание файла вместо вставки фактического кода на страницу, но пока ничего не сработало.

    <?php
if($_POST && $_POST['submit'])
{
    //  Put form posts into varibles
        $name = $_POST['name'];
        $mainphone = $_POST['mainphone'];
        $email = $_POST['email'];
        $altphone = $_POST['altphone'];
        $contacttime = $_POST['contacttime'];
        $airport = $_POST['airport'];
        $departdate = $_POST['departdate'];
        $departdateflex = $_POST['departdateflex'];
        $duration = $_POST['duration'];
        $prefcountry = $_POST['prefcountry'];
        $prefresort = $_POST['prefresort'];
        $hotels = $_POST['hotels'];
        $numadults = $_POST['numadults'];
        $numunder12 = $_POST['numunder12'];
        $numunder2 = $_POST['numunder2'];
        $roomarrange = $_POST['roomarrange'];
        $maxbudget = $_POST['maxbudget'];
        $addreq = $_POST['addreq'];

    //  Set Errors To None
        $errors = false;

    //  Validate Form
        if(!$mainphone)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter your phone number</li>";
        }

        if(!$email)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter your email address</li>";
        }       

        if(!$airport)
        {
            $errors = true;
            $errMsgs .= "<li>Please select the airport in which you would like to depart from</li>";
        }           

        if(!$departdate)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter the date you would like to depart</li>";
        }

        if(!$duration)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter the duration of your stay</li>";
        }                   

        if(!$prefcountry)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter the preferred country you wish to visit</li>";
        }       

        if(!$numadults)
        {
            $errors = true;
            $errMsgs .= "<li>Please enter the number of adults travelling</li>";
        }               
    //  Check For Errors
        if($errors)
        {
            //  Errors Found
                $foundErrors = $errMsgs;
        }
        else
        {
            //  No Errors Found || Process the form

            //  Create Email
                $emailMsg = "<html><body>";
                $emailMsg .= "<p>";
                $emailMsg .= "<strong>Name:</strong> $name <br />";
                $emailMsg .= "<strong>Main Phone:</strong> $mainphone <br />";
                $emailMsg .= "<strong>Email:</strong> $email <br />";
                $emailMsg .= "<strong>Alternate Phone:</strong> $altphone <br />";
                $emailMsg .= "<strong>Contact Time:</strong> $contacttime <br />";
                $emailMsg .= "<strong>Airport's:</strong> <br />";
                foreach($airport as $v)
                {
                    $emailMsg .= '- '.$v."<br />";
                }
                $emailMsg .= "<strong>Depart Date:</strong> $departdate <br />";
                $emailMsg .= "<strong>Departure Flexible By:</strong> $departdateflex <br />";
                $emailMsg .= "<strong>Duration:</strong> $duration <br />";
                $emailMsg .= "<strong>Preferred Country:</strong> $prefcountry <br />";
                $emailMsg .= "<strong>Preferred Resort:</strong> $prefresort <br />";
                $emailMsg .= "<strong>No. Adults:</strong> $numadults <br />";
                $emailMsg .= "<strong>No. Under 12's:</strong> $numunder12 <br />";
                $emailMsg .= "<strong>No. Under 2's:</strong> $numunder2 <br />";
                $emailMsg .= "<strong>Room Arrangements:</strong> $roomarrange <br />";
                $emailMsg .= "<strong>Max Budget:</strong> $maxbudget <br />";
                $emailMsg .= "<strong>Additional Requirements:</strong> $addreq <br /></p>";
                $emailMsg .= "</body></html>";

                $Name = "$name"; //senders name
                $email = "$email"; //senders e-mail adress
                $recipient = "[email protected]"; //recipient
                $mail_body = "$emailMsg"; //mail body
                $subject = "Web enquiry form"; //subject
                $header = "From: ". $Name . " <" . $email . ">\r\n" . "Content-type: text/html; charset=iso-8859-1"; //optional headerfields

                ini_set('sendmail_from', '[email protected]'); //Suggested by "Some Guy"

                mail($recipient, $subject, $mail_body, $header); //mail command :)
        }
}
?>

<div class="errors">
    <h2>Sorry but your enquiry could not be sent</h2>
    <p>There were problems with the following fields:</p>

    <ul>
        <?php echo $foundErrors; ?>
    </ul>
</div>
<form name="form" method="post" action="">
    <legend>x</legend>
    <fieldset>
        <label for="name">
            Name:
            <input type="text" name="name" value="<?= $name; ?>">
        </label>

        <label for="mainphone">
            Main Contact Phone Number:<span class="required">*</span>
            <input type="text" name="mainphone" value="<?= $mainphone; ?>">
        </label>

        <label for="email">
            Email Address:<span class="required">*</span>
            <input type="text" name="email" value="<?= $email; ?>">
        </label>

        <label for="altphone">
            Alternative Contact Phone Number:
            <input type="text" name="altphone" value="<?= $altphone; ?>">
        </label>
    </fieldset>
    <fieldset>
        <label for="contacttime">Preferred Contact Time:</label>

        <label for="contacttime">
            <input type="radio" name="contacttime" <?php if($contacttime == '10am-12pm') { echo 'checked'; } ?> value="10am-12pm"/>
            10am - 12pm
        </label>

        <label for="contacttime">
            <input type="radio" name="contacttime" <?php if($contacttime == '12pm-2pm') { echo 'checked'; } ?> value="12pm-2pm"/>
            12pm - 2pm
        </label>

        <label for="contacttime">
            <input type="radio" name="contacttime" <?php if($contacttime == '2pm-4pm') { echo 'checked'; } ?> value="2pm-4pm"/>
            2pm - 4pm
        </label>

        <label for="contacttime">
            <input type="radio" name="contacttime" <?php if($contacttime == '4pm-6pm') { echo 'checked'; } ?> value="4pm-6pm"/>
            4pm - 6pm
        </label>

        <label for="contacttime">
            <input type="radio" name="contacttime" <?php if($contacttime == '6pm-7pm') { echo 'checked'; } ?> value="6pm-7pm"/>
            6pm - 7pm
        </label>    
    </fieldset>
    <fieldset>
        <label for="airport">Preferred Departure Airport:</label>

        <label for="airport">
            <input type="checkbox" name="airport[0]" <?php if($airport[0]) { echo 'checked'; } ?> value="Heathrow"/>
            Heathrow
        </label>

        <label for="airport">
            <input type="checkbox" name="airport[1]" <?php if($airport[1]) { echo 'checked'; } ?>  value="Gatwick"/>
            Gatwick
        </label>

        <label for="airport">
            <input type="checkbox" name="airport[2]" <?php if($airport[2]) { echo 'checked'; } ?> value="Manchester"/>
            Manchester
        </label>

        <label for="airport">
            <input type="checkbox" name="airport[3]" <?php if($airport[3]) { echo 'checked'; } ?> value="Birmingham"/>
            Birmingham
        </label>

        <label for="airport">
            <input type="checkbox" name="airport[4]" <?php if($airport[4]) { echo 'checked'; } ?> value="Glasgow"/>
            Glasgow
        </label>
    </fieldset>
    <fieldset>
        <label for="departdate">
            Departure Date: <span class="required">*</span>
            <input type="text" name="departdate" value="<?= $departdate; ?>">
        </label>

        <label for="departdateflex">Departure Date Flexibility:</label>
        <select name="departdateflex">
            <option <?php if($departdateflex == '+/- 0 days') { echo 'selected'; } ?> value="+/- 0 days">+/- 0 days</option>
            <option <?php if($departdateflex == '+/- 1 days') { echo 'selected'; } ?> value="+/- 1 days">+/- 1 days</option>
            <option <?php if($departdateflex == '+/- 2 days') { echo 'selected'; } ?> value="+/- 2 days">+/- 2 days</option>
            <option <?php if($departdateflex == '+/- 3 days') { echo 'selected'; } ?> value="+/- 3 days">+/- 3 days</option>
            <option <?php if($departdateflex == '+/- 4 days') { echo 'selected'; } ?> value="+/- 4 days">+/- 4 days</option>
            <option <?php if($departdateflex == '+/- 5 days') { echo 'selected'; } ?> value="+/- 5 days">+/- 5 days</option>
            <option <?php if($departdateflex == '+/- 6 days') { echo 'selected'; } ?> value="+/- 6 days">+/- 6 days</option>
            <option <?php if($departdateflex == '+/- 7 days') { echo 'selected'; } ?> value="+/- 7 days">+/- 7 days</option>
        </select>

        <label for="duration">Duration:</label>
        <select name="duration">
            <option <?php if($duration == '1 night') { echo 'selected'; } ?> value="1 night">1 night</option>
            <option <?php if($duration == '2 nights') { echo 'selected'; } ?> value="2 nights">2 nights</option>
            <option <?php if($duration == '3 nights') { echo 'selected'; } ?> value="3 nights">3 nights</option>
            <option <?php if($duration == '4 nights') { echo 'selected'; } ?> value="4 nights">4 nights</option>
            <option <?php if($duration == '5 nights') { echo 'selected'; } ?> value="5 nights">5 nights</option>
            <option <?php if($duration == '6 nights') { echo 'selected'; } ?> value="6 nights">6 nights</option>
            <option <?php if($duration == '7 nights') { echo 'selected'; } ?> value="7 nights">7 nights</option>
            <option <?php if($duration == '8 nights') { echo 'selected'; } ?> value="8 nights">8 nights</option>
            <option <?php if($duration == '9 nights') { echo 'selected'; } ?> value="9 nights">9 nights</option>
            <option <?php if($duration == '10 nights') { echo 'selected'; } ?> value="10 nights">10 nights</option>
            <option <?php if($duration == '11 nights') { echo 'selected'; } ?> value="11 nights">11 nights</option>
            <option <?php if($duration == '12 nights') { echo 'selected'; } ?> value="12 nights">12 nights</option>
            <option <?php if($duration == '13 nights') { echo 'selected'; } ?> value="13 nights">13 nights</option>
            <option <?php if($duration == '14 nights') { echo 'selected'; } ?> value="14 nights">14 nights</option>
            <option <?php if($duration == '15 nights') { echo 'selected'; } ?> value="15 nights">15 nights</option>
            <option <?php if($duration == '15+ nights') { echo 'selected'; } ?> value="15+ nights">15+ nights</option>
            <option <?php if($duration == '21 nights') { echo 'selected'; } ?> value="21 nights">21 nights</option>
            <option <?php if($duration == '28 nights') { echo 'selected'; } ?> value="28 nights">28 nights</option>
        </select>

        <label for="prefcountry">
            Preferred Destination Country:<span class="required">*</span>
            <input type="text" name="prefcountry" value="<?= $prefcountry; ?>">
        </label>

        <label for="prefresort">
            Preferred Destination Resort:
            <input type="text" name="prefresort" value="<?= $prefresort; ?>">
        </label>

        <label for="hotels">
            Name of hotel(s) of interest:
            <textarea rows="5" cols="20" name="hotels"><?= $hotels; ?></textarea>
        </label>

        <label for="numadults">
            Number of adults:<span class="required">*</span>
            <input type="text" name="numadults" value="<?= $numadults; ?>">
        </label>

        <label for="numunder12">
            Number of Children under 12:
            <input type="text" name="numunder12" value="<?= $numunder12; ?>">
        </label>

        <label for="numunder2">
            Number of Infants under 2:
            <input type="text" name="numunder2" value="<?= $numunder2; ?>">
        </label>

        <label for="roomarrange">Room Arrangements:</label>
        <select name="roomarrange">
            <option <?php if($roomarrange == 'single (sleeps 1)') { echo 'selected'; } ?> value="single (sleeps 1)">single (sleeps 1)</option>
            <option <?php if($roomarrange == 'twin (sleeps 2)') { echo 'selected'; } ?> value="twin (sleeps 2)">twin (sleeps 2)</option>
            <option <?php if($roomarrange == 'double (sleeps 2)') { echo 'selected'; } ?> value="double (sleeps 2)">double (sleeps 2)</option>
            <option <?php if($roomarrange == 'twin plus child (above 2 years)') { echo 'selected'; } ?> value="twin plus child (above 2 years)">twin plus child (above 2 years)</option>
            <option <?php if($roomarrange == 'double plus child (above 2 years)') { echo 'selected'; } ?> value="double plus child (above 2 years)">double plus child (above 2 years)</option>
            <option <?php if($roomarrange == 'family plan 2 adults &amp; 2 children') { echo 'selected'; } ?> value="family plan 2 adults &amp; 2 children">family plan 2 adults & 2 children</option>
            <option <?php if($roomarrange == 'family plan 2 adults &amp; 3 children') { echo 'selected'; } ?> value="family plan 2 adults &amp; 3 children">family plan 2 adults & 3 children</option>
            <option <?php if($roomarrange == 'triple (sleeps 3)') { echo 'selected'; } ?> value="triple (sleeps 3)">triple (sleeps 3)</option>
            <option <?php if($roomarrange == 'triple plus child (above 2 years)') { echo 'selected'; } ?> value="triple plus child (above 2 years)">triple plus child (above 2 years)</option>
            <option <?php if($roomarrange == 'quad/villas/homes (sleeps 4+)') { echo 'selected'; } ?> value="quad/villas/homes (sleeps 4+)">quad/villas/homes (sleeps 4+)</option>
        </select>

        <label for="maxbudget">
            Maximum Budget per person &pound;:
            <input type="text" name="maxbudget" value="<?= $maxbudget; ?>">
        </label>

        <label for="addreq">
            Additional Requirements:
            <textarea rows="5" cols="20" name="addreq"><?= $addreq; ?></textarea>
        </label>
    </fieldset>
    <fieldset>
        <input type="submit" value="submit" name="submit">
    </fieldset>
</form>

Если кто может помочь, буду признателен - спасибо.


person Danny    schedule 12.11.2009    source источник
comment
@ Дэнни: что ты имеешь в виду под expression engine?   -  person RageZ    schedule 12.11.2009
comment
Я знаю, что вы сказали, что включили его в своих настройках, но я хочу уточнить, что вам нужно включить его в индивидуальном шаблоне, используя ссылку настроек при просмотре группы настроек. Простая проверка — можете ли вы заставить ЛЮБОЙ PHP-код работать на странице? Попробуйте простой ‹?php echo('Hi!'); ?› без остального. Это работает? Что выходит?   -  person Doug Avery    schedule 12.11.2009
comment
@RageZ: предположительно это: expressionengine.com (это CMS от тех же людей, которые производят CodeIgniter)   -  person Ben Dunlap    schedule 12.11.2009
comment
У вас есть EE для анализа PHP в этом шаблоне на входе или на выходе?   -  person Tom Davies    schedule 22.10.2012


Ответы (2)


Во-первых, я думаю, вам лучше использовать один из готовых модулей форм для ExpressionEngine. Есть несколько доступных, таких как FreeForm и ProForm, которые будут обрабатывать отправку вашей электронной почты, а также проверку и сообщения об ошибках.

Если вы хотите использовать маршрут PHP, вам, вероятно, будет удобнее использовать входную библиотеку ExpressionEngine/CodeIgniter, которая выполняет предварительную обработку массива $_POST. Доступ ко всем вашим ключам можно получить с помощью $this->EE->input->post('key_name');

person Jeremy Gimbel    schedule 22.10.2012

Насколько я понимаю, ExpressionEngine обрабатывает небольшой и простой php внутри отдельного шаблона с «включенным php», но для больших фрагментов кода или сложного php вам нужно создать свой собственный плагин.

Что тоже имеет смысл, так как делает систему более безопасной.

Есть много учебников там.

person Samsull    schedule 03.11.2012