2013-05-05 25 views
0

這個問題一直被問到,但我不明白爲什麼我的工作不正常。我有一個重定向到自己的表單。如果PHP決定提交它,則會顯示成功/失敗消息,並將用戶輸入顯示爲默認值,並禁用這些字段:使用phpinfo我可以看到表單正在提交,但是第一個條件不起作用。我試了幾個版本,但沒有運氣。這很奇怪,因爲它發送電子郵件不能讓我的PHP表單工作,發送郵件,但不在重定向頁面上運行代碼

具體來說,結果和禁用功能在表單發送後不顯示它們的代碼。

<?php 
function clean($data) { 
    $data = trim(stripslashes(strip_tags($data))); 
    return $data; 
} 
function result(){ 
    if($sent) echo $result; 
} 
function disable($field){ 
    if($sent){ 
     if($field != null){ 
      $ret .= $field . '", disabled, placeholder!="'; 
     } 
     $ret .= '", disabled, placeholder!="'; 
     echo $ret; 
    } 
} 
function option($item){ 
     $ret = "<option>"; 
    if($sent){ 
     if($eventType == $item){ 
      $ret = "<option selected>"; 
     } 
    } 
    $ret .= $item . "</option>"; 
    echo $ret; 
} 
if(isset($_POST['name'])){ 
    $sent = TRUE; 
    $result = null; 
    $name = $_POST['name']; 
    $phone = $_POST['phone']; 
    $email = $_POST['email']; 
    $eventDate = $_POST['eventDate']; 
    $eventTime = $_POST['eventTime']; 
    $eventLength = $_POST['eventLength']; 
    $eventLocation = $_POST['eventLocation']; 
    $eventType = $_POST['eventType']; 
    $message = $_POST['message']; 

    $recipient = ""; 
    $subject = " Form Submission"; 
    $mailheader = "From: \r\n"; 
    $formcontents = "You received this e-mail message through your website: \n\n"; 
    $formcontents .= "Name: " . clean($name) . "\r\n"; 
    $formcontents .= "Phone: " . clean($phone) . "\r\n"; 
    $formcontents .= "Email: " . clean($email) . "\r\n"; 
    $formcontents .= "Event Date: " . clean($eventDate) . "\r\n"; 
    $formcontents .= "Event Time: " . clean($eventTime) . "\r\n"; 
    $formcontents .= "Event Length: " . clean($eventLength) . "\r\n"; 
    $formcontents .= "Event Location: " . clean($eventLocation) . "\r\n"; 
    $formcontents .= "Event Type: " . clean($eventType) . "\r\n"; 
    $formcontents .= "Message: " . clean($message) . "\r\n"; 
    $formcontents .= "\r\n"; 
    $formcontents .= 'IP: '.$_SERVER['REMOTE_ADDR']."\r\n"; 
    $formcontents .= 'Browser: '.$_SERVER['HTTP_USER_AGENT']."\r\n"; 

// Send mail 
    if(mail($recipient, $subject, $formcontents, $mailheader)){; 
     $result = '<h3 class="alert alert-success"> Thank you, your form was successfully sent and I will contact you shortly.</h3>'; 
    } else { 
     $result = '<h3 class="alert alert-error"> Your mail could not be sent at this time.</h3>'; 
    } 
} 
?> 

<form action="contact.php" method="POST" class="form-horizontal span4"> 
    <fieldset> 
    <legend> 
     <h2>Or send me a message. </h2> 
    </legend> 
    <p class="help-block">None of the fields are required, but the more information I have about your event, the more detailed I can be in my response.</p> 
    <legend class="help-block">Your Details</legend> 
    <div class="control-group"> 
     <label for="name" class="control-label">Your Name</label> 
     <div class="controls"> 
     <input id="name" type="text" name="name" placeholder="<?php disable($name); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="phone" class="control-label">Your Contact Number</label> 
     <div class="controls"> 
     <input id="phone" type="tel" name="phone" placeholder="<?php disable($phone); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="email" class="control-label">Your Email</label> 
     <div class="controls"> 
     <input id="email" type="email" name="email" placeholder="<?php disable($email); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <legend class="help-block">Your Event </legend> 
    <div class="control-group"> 
     <label for="eventDate" class="control-label">Your Event's Date</label> 
     <div class="controls"> 
     <input id="eventDate" type="date" name="eventDate" placeholder="<?php disable($eventDate); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="eventTime" class="control-label">Your Event's Start Time</label> 
     <div class="controls"> 
     <input id="eventTime" type="time" name="eventTime" placeholder="<?php disable($eventTime); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="eventLength" class="control-label">Your Event's Length</label> 
     <div class="controls"> 
     <input id="eventLength" type="text" name="eventLength" placeholder="<?php disable($eventLength); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="eventLocation" class="control-label">Your Event's Location</label> 
     <div class="controls"> 
     <input id="eventLocation" type="text" name="eventLocation" placeholder="<?php disable($eventLocation); ?>" class="input-xlarge"/> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="eventType" class="control-label">What Kind of Event</label> 
     <div class="controls"> 
     <select id="eventType" name="eventType" placeholder="<?php disable($eventType); ?>"><?php option("Charity Event"); option("Expo/Trade Show"); option("Personal Event"); option("Other"); ?></select> 
     </div> 
    </div> 
    <div class="control-group"> 
     <label for="message" class="control-label">Other comments or the best time to reach you.</label> 
     <div class="controls"> 
     <textarea id="message" name="message" rows="10" placeholder="<?php disable($message); ?>" class="input-xxlarge"></textarea> 
     </div> 
    </div> 
    <div class="form-actions"> 
     <button type="submit" name="submit" placeholder="<?php disable(null); ?>" class="btn btn-primary">Send Message</button> 
    </div> 
    </fieldset> 
</form> 

+0

如果它發送的電子郵件意味着第一個條件if(isset($ _ POST ['name']))確實有效,它會進入代碼。現在 - 什麼是不正確的工作? – Adidi 2013-05-05 13:38:39

回答

1

你要導入的全局變量到功能範圍,如:

function result(){ 
    global $sent, $result; 
    if($sent) echo $result; 
} 

..in函數disable()和option()也一樣。

1
if(isset($_POST['name'])){ 

應該

if(isset($_POST['submit'])){ 
+0

這不能解決它,我在調試時將其更名爲名稱。我認爲提交空白是問題。 – Lochlan 2013-05-05 13:48:00

相關問題