2015-01-12 82 views
1

這是我的第一個問題在這裏,我希望不要做錯了。PHP後重定向和謝謝你的消息

即時通訊使用在我的網站一個簡單的形式,這裏是郵件的PHP代碼:

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $from = 'xxxxx'; 
    $to = '[email protected]'; 
    $subject = 'xxxxx'; 
    $human = $_POST['human']; 

    $body = "De: $name\n E-Mail: $email\n Mensaje:\n $message"; 

    if ($_POST['submit']) { 
     if ($name != '' && $email != '') { 
      if ($human == '4') {     
       if (mail ($to, $subject, $body, $from)) { 
       echo '<p>Su mensaje ha sido enviado correctamente!</p>'; 
      } else { 
       echo '<p>Ocurrió un error, porfavor vuelva e intentlo de nuevo!</p>'; 
      } 
     } else if ($_POST['submit'] && $human != '4') { 
      echo '<p>Su respuesta anti-spam es incorrecta!</p>'; 
     } 
     } else { 
      echo '<p>Por favor, rellene todos los campos obligatorios!!</p>'; 
     } 
    } 
?> 

1)我想後重定向到指數的謝謝!消息我找不到辦法做到這一點。

2)如果有可能的話,點我正確的方向來改進反垃圾郵件系統。

在此先感謝! )

回答

-1

可以使用PHP頭功能:

header('Refresh: 2; url=http://google.com'); 

2(後刷新:)是第二數量和URL的URL。 (它也可以是相對於您的域名,如:「/success.php」)

關於您的反垃圾郵件系統:我不能多說,因爲我只看到您獲得POST值。 (但不是它來自或它是什麼) 但谷歌「Captchas」或Howtos得到如何使他們的想法。

0

您確實可以使用由SimonEritsch所述的php標頭進行重定向。但是,如果表單有問題,請小心不要重定向,因爲您很可能需要再次顯示/重新呈現表單以允許用戶更正錯誤。只有在成功時纔會重新定向。

您也可以使用即時的標題(「Location:myResponsePage.php」),而不是合併延遲。

有多種方法可以用來限制垃圾郵件/機器人處理表單。這些範圍從captures such as that from Google(再次如下面SimonEritsch所述)到在您的表單的任一側執行您自己的附加檢查。例如:

  1. 檢查引用者實際上是您自己網站上的提交頁面,並且該數據不是來自其他地方。
  2. 也許在提交表單之前必須訪問的過程中的某個其他階段創建一個會話變量。然後您可以將其作爲隱藏的表單變量傳遞。如果傳遞的值不正確或者會話值不存在,則可能沒有遵循所有進程。
  3. 有一個simple "blank field" trick但我個人不會建議這樣做。雖然有趣。

有很多東西可以使用。仔細看看這個帖子「Stop spam without Captcha」或Practical non-image based CAPTCHA approaches都在這裏。

0

在你的代碼可以以使頁面重定向用PHP header,但卻你可能會想納入一個延遲,所以用戶看到的「謝謝你」的消息。

例如,您可以使用此:

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $from = 'xxxxx'; 
    $to = '[email protected]'; 
    $subject = 'xxxxx'; 
    $human = $_POST['human']; 

    $body = "De: $name\n E-Mail: $email\n Mensaje:\n $message"; 

    if ($_POST['submit']) { 
     if ($name != '' && $email != '') { 
      if ($human == '4') {     
       if (mail ($to, $subject, $body, $from)) { 
       echo '<p>Su mensaje ha sido enviado correctamente!</p>'; 

       $redirSec = 3; 
       $redirPage = "http://example.com/secretarea"; 
       header("Refresh: ". $redirSec ."; url=". $redirPage); 
      } else { 
       echo '<p>Ocurrió un error, porfavor vuelva e intentlo de nuevo!</p>'; 
      } 
     } else if ($_POST['submit'] && $human != '4') { 
      echo '<p>Su respuesta anti-spam es incorrecta!</p>'; 
     } 
     } else { 
      echo '<p>Por favor, rellene todos los campos obligatorios!!</p>'; 
     } 
    } 
?> 

至於你的反垃圾郵件的人驗證,你應該嘗試使用的Recaptcha解決方案,如要求用戶one offered by Google點擊,以便在I'm not a robot箱繼續:

enter image description here

+0

謝謝cybermonkey,你能告訴我怎麼去適應它在我的代碼? – Diego

+0

@Diego我沒有使用任何Recaptcha解決方案,因爲我沒有運行任何網站(需要它),但是實現方式非常完善。 – cybermonkey

+0

其確定,reCaptcha我會發現,我的意思是你給我的頭文件代碼。 – Diego

相關問題