php - 自定义 PHP 和表达式引擎

标签 php forms expressionengine

我已经创建了一个复杂的 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@email.com"; //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@email.com'); //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>

如果有人可以提供帮助,我们将不胜感激 - 谢谢。

最佳答案

首先,我认为您最好使用 ExpressionEngine 的预建表单模块之一。有几个可用的,例如 FreeForm 和 ProForm,它们将处理您的电子邮件发送以及验证和错误消息。

如果您确实想使用 PHP 路由,您可能会发现使用 ExpressionEngine/CodeIgniter 输入库会更好,它会预处理 $_POST 数组。你所有的 key 都可以通过 $this->EE->input->post('key_name');

访问

关于php - 自定义 PHP 和表达式引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1719099/

相关文章:

php - 在 Mac OS X 10.6 上安装 PECL

php - 什么是简单的 IF 总是返回 true?

php - $ _FILES ['file'] ['size']对于上载超过max_filesize的文件,回显0(零)

url - URL 中的 UTM 标签和 anchor

php - 使用 Laravel 4 Eloquent 连接列时列名 ' ' 无效?

c# - 透明表单无法正确显示文本

css - 复选框图像叠加

c# - 发布 : "This program might not have installed correctly" 后运行 exe 时出错

php - Jquery 和联系表单验证

javascript - ExpressionEngine 渲染带有 { } 括号的 JS 代码