开发者

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.

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开发者_StackOverflow="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. There are several available, such as FreeForm and ProForm, which will handle your email sending as well as validation and error messages.

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. All of your keys can be accessed with $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.

Which makes good sense too, as makes for a more secure system.

There are lots of tutorials out there.

0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜