2013-07-31 39 views
-1

我目前正在爲網站的聯繫表單的早期階段工作,但它顯示的是PHP代碼並且沒有執行代碼。PHP聯繫表格無法正常工作

直接執行PHP代碼(即從localhost/script.php執行時)。

下面的代碼:

<?php 
     if ($_POST['email']<>'') { 

      require_once 'Mail.php'; 

      $from = "[email protected]"; 
      $to = "[email protected]"; 
      $subject = "Test subject"; 
      $body = "Test"; 

      $host = "ssl://smtp.gmail.com"; 
      $port = "465"; 
      $username = "[email protected]"; 
      $password = "mypassword"; 

      $headers = array ('From' => $from, 
      'To' => $to, 
      'Subject' => $subject); 
      $smtp = Mail::factory('smtp', 
      array ('host' => $host, 
       'port' => $port, 
       'auth' => true, 
       'username' => $username, 
       'password' => $password)); 

      $mail = $smtp->send($to, $headers, $body); 

      if (PEAR::isError($mail)) { 
      echo("<p>" . $mail->getMessage() . "</p>"); 
      } else { 
      echo("<p>Message successfully sent!</p>"); 
      } 

     } else { 

      <form method="post"> 
       <input type="text" name="nombre" placeholder="Nombre"><p></p> 
       <input type="text" name="email" placeholder="Email"><p></p> 
       <input type="text" name="telefono" placeholder="Teléfono"><p></p> 
       <textarea rows=6 name="mensaje" class="span4" placeholder="Mensaje"></textarea><p></p> 

       <input type="submit" class="btn btn-primary" value="Enviar"> 
      </form> 

     }; 
    ?> 

我知道的形式(目前)沒有涉及到PHP腳本,我只是試圖讓腳本得到執行。

這是當我打開HTML顯示的內容(http://i.imgur.com/6jhvcpH.jpg

+2

您已經混合了HTML和PHP,沒有關閉和打開PHP標記。你在用什麼編輯器? – DevlshOne

+1

請使用!=不等於或事件更好「if(!empty($ _ POST ['email']))」。檢查php的開始和結束標記,你正在向php代碼添加html,就像我看到的那樣。 – user1759572

回答

0

你需要別人後關閉PHP塊,然後打開它在html表單之後再次出現。

} else { ?> 

    start html stuff... 
    end html stuff 

<?php 
    } //end else 
?> 
+0

謝謝! 解決這個問題,再加上從.html改變擴展名爲.php修復它 – user2020618

0

更換

<form method="post"> 
     <input type="text" name="nombre" placeholder="Nombre"><p></p> 
     <input type="text" name="email" placeholder="Email"><p></p> 
     <input type="text" name="telefono" placeholder="Teléfono"><p></p> 
     <textarea rows=6 name="mensaje" class="span4" placeholder="Mensaje"></textarea><p></p> 

     <input type="submit" class="btn btn-primary" value="Enviar"> 
    </form> 

echo '<form method="post"> 
     <input type="text" name="nombre" placeholder="Nombre"><p></p> 
     <input type="text" name="email" placeholder="Email"><p></p> 
     <input type="text" name="telefono" placeholder="Teléfono"><p></p> 
     <textarea rows=6 name="mensaje" class="span4" placeholder="Mensaje"></textarea><p></p> 

     <input type="submit" class="btn btn-primary" value="Enviar"> 
    </form>'; 
0

回聲的HTML表單,並確保您的文件使用.php擴展名(.php)

0

即使<>是你可以可以使用不等式運算符!=運算符。由於if語句只有一個操作符。 !=和<>之間的唯一區別是優先。

雖然我會用isset

if (isset($_POST['email'])) 

或空

if (!empty($_POST['email'])) 

,因爲他們更具可讀性。

你也有PHP混合的HTML。你應該回應PHP的HTML。

echo '<form method="post"> 
    <input type="text" name="nombre" placeholder="Nombre"><p></p> 
    <input type="text" name="email" placeholder="Email"><p></p> 
    <input type="text" name="telefono" placeholder="Teléfono"><p></p> 
    <textarea rows=6 name="mensaje" class="span4" placeholder="Mensaje"></textarea><p></p> 

    <input type="submit" class="btn btn-primary" value="Enviar"> 
    </form>'; 

在您的評論的錯誤你,因爲你在呼喚Mail::factoryPEAR::isError靜態他們不具有嚴格的標準支持。

您可以用下面的函數調用

error_reporting(E_ALL^E_STRICT); 

在你的代碼的頂部禁用嚴格的錯誤。