简体   繁体   English

自定义PHP和表达式引擎

[英]Custom PHP and expression engine

I've created a complex php contact form that I'm looking to implement into my contact page, but for some reason expression engine isn't recognizing the php code even though I've enabled it in my preferences. 我已经创建了一个复杂的php联系表单,我希望在我的联系页面中实现,但由于某种原因,表达引擎无法识别php代码,即使我已经在我的首选项中启用它。

Here's what the form looks like, I've tried a few things like embedding the file instead of pasting the actual code on the page - but nothing has worked yet. 这是表单的样子,我尝试了一些东西,比如嵌入文件而不是粘贴页面上的实际代码 - 但还没有任何工作。

    <?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>

If anyone can help, it would be appreciated - thanks. 如果有人可以提供帮助,我们将不胜感激 - 谢谢。

Firstly, I think you might be better off using one of the prebuilt form modules for ExpressionEngine. 首先,我认为最好使用ExpressionEngine的一个预构建表单模块。 There are several available, such as FreeForm and ProForm, which will handle your email sending as well as validation and error messages. 有几种可用的,如FreeForm和ProForm,它们将处理您的电子邮件发送以及验证和错误消息。

If you do want to use the PHP route, you'll probably find it better to use the ExpressionEngine/CodeIgniter input library, which preprocesses the $_POST array. 如果你想使用PHP路由,你可能会发现使用ExpressionEngine / CodeIgniter输入库更好,它预处理$ _POST数组。 All of your keys can be accessed with $this->EE->input->post('key_name'); 您可以使用$ this-> EE-> input-> post('key_name')访问所有密钥;

From what I understand ExpressionEngine handles small and simple php inside an individual template with 'php enabled', but for larger chunks of code or complex php you need to build your own plugin. 根据我的理解,ExpressionEngine在单个模板中使用'php enabled'处理小而简单的php,但是对于更大的代码块或复杂的php,你需要构建自己的插件。

Which makes good sense too, as makes for a more secure system. 这也很有意义,因为它可以提供更安全的系统。

There are lots of tutorials out there. 那里有很多教程。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM