2013-06-30 29 views
1

我已經發了一個電子郵件發件人,但它不起作用。我認爲功能甚至沒有被調用。 如何做到這一點?我不希望表單在其他頁面上重定向。從同一頁面上的php函數調用表單提交操作不起作用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html> 
    <head> 
     <title>Mail Sender by midas</title> 
     <meta content="text/html; charset=utf-8" http-equiv="content-type" /> 
    </head> 
    <?php 
    if(isset($_POST['submitfunc'])) { 
     submitfunc(); 
    } 
    else 
    //show form 
    ?> 
    <body> 
     <form action="?submitfunc" method="post"> 
      <p> 
       Wyślij jako:<br /> 
       <input name="nadawca" type="text" /><br /> 
       <br /> 
       Odbiorca:<br /> 
       <input name="odbiorca" type="text" /><br /> 
       <br /> 
       Temat:<br /> 
       <input name="temat" type="text" /><br /> 
       <br /> 
       Wiadomość lub kod HTML:<br /> 
       <textarea name="wiadomosc" style="width: 210px; height: 76px;"></textarea></p> 
       <p> 
       <input type="submit" value="Wyślij" /></p> 
      <p> 
       <strong>Autor tej strony nie odpowiada za wiadomości wysłane za pośrednictwem tego skryptu.</strong></p> 
     </form> 
    </body> 

    <?php 
     function submitfunc() { 
      if(isset($_POST['nadawca']) and isset($_POST['odbiorca']) and isset($_POST['wiadomosc']) and isset($_POST['temat'])) { 
       $to  = $_POST['odbiorca']; 
       $subject = $_POST['temat']; 
       $message = $_POST['wiadomosc']; 
       $headers = 'From: ' . $_POST['nadawca'] . "\r\n" . 
        'Reply-To: ' . $_POST['nadawca'] . "\r\n" . 
        'X-Mailer: PHP/' . phpversion(); 

       // postawienie @ wylaczy wyswietlanie bledow przez to wyrazenie 
       $mail_sent = @mail($to, $subject, $message, $headers, '-f ' . $_POST['nadawca']); 

       echo $mail_sent ? "Mail sent" : "Mail failed"; 
      } 
      else{ 
       echo "fail"; 
      } 
     } 
    ?> 
</html> 
+2

您的表單操作是在查詢字符串中的'submitfunc',它隱含'$ _GET ['submitfunc']'但您正在測試用於'$ _POST ['submitfunc']'。 –

回答

6

1>更改表單標籤的action屬性的值作爲

2>,並通過get值

檢查的過程如下 「行動submitfunc?」:

if(isset($_GET['action'])=='submitfunc') { 
    submitfunc(); 
}else 
//show form 
?> 
<body> 
    <form action="?action=submitfunc" method="post"> 
2
if(isset($_POST['submit'])) {... 

    <form action="" method="post"> 
... 

    <input type="submit" value="Wyślij" name="submit"/></p> 
... 
1

在您的形式使用

<input type="hidden" name="submitfunc" value="1" /> 
1

有一個名稱的元素

submitfunc

請試試這個

if(isset($_POST['nadawca'])) { 
    submitfunc(); 
} 
1

它看起來像你想提交時調用的函數。

試試這個

<form action="" method="post"> 
     <p> 
      Wyślij jako:<br /> 
      <input name="nadawca" type="text" /><br /> 
      <br /> 
      Odbiorca:<br /> 
      <input name="odbiorca" type="text" /><br /> 
      <br /> 
      Temat:<br /> 
      <input name="temat" type="text" /><br /> 
      <br /> 
      Wiadomość lub kod HTML:<br /> 
      <textarea name="wiadomosc" style="width: 210px; height: 76px;"></textarea></p> 
      <p> 
      <input type="submit" value="Wyślij" /></p> 
     <p> 
      <strong>Autor tej strony nie odpowiada za wiadomości wysłane za pośrednictwem tego skryptu.</strong></p> 
    </form> 

而且你不必使用此功能。

試試這個

 if(isset($_POST['nadawca']) and isset($_POST['odbiorca']) and isset($_POST['wiadomosc']) and isset($_POST['temat'])) { 
      $to  = $_POST['odbiorca']; 
      $subject = $_POST['temat']; 
      $message = $_POST['wiadomosc']; 
      $headers = 'From: ' . $_POST['nadawca'] . "\r\n" . 
       'Reply-To: ' . $_POST['nadawca'] . "\r\n" . 
       'X-Mailer: PHP/' . phpversion(); 

      // postawienie @ wylaczy wyswietlanie bledow przez to wyrazenie 
      $mail_sent = @mail($to, $subject, $message, $headers, '-f ' . $_POST['nadawca']); 

      echo $mail_sent ? "Mail sent" : "Mail failed"; 
     } 
     else{ 
      echo "fail"; 
     }