2012-04-24 45 views
0

我使用下面的代碼來發送電子郵件到我的地址,我提醒新用戶註冊:試圖刪除電子郵件形式的PHP重定向功能,並把它變成一個彈出消息

<?php 
$errors = ''; 
$myemail = '[email protected]'; 
if (empty($_POST['email']) || empty($_POST['email']) || empty($_POST['email'])) { 
    $errors .= "\n Error: all fields are required"; 
} 

$name   = $_POST['name']; 
$email_address = $_POST['email']; 
$message  = $_POST['message']; 

if (!preg_match(
     "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
     $email_address 
    )) { 
    $errors .= "\n Error: Invalid email address"; 
} 

if (empty($errors)) { 
    $to   = $myemail; 
    $email_subject = "Invitation Request: $email_address"; 
    $email_body = "has received a new invitation request. " . 
        "\n Email: $email_address"; 

    $headers = "From: $myemail\n"; 
    $headers .= "Reply-To: $email_address"; 

    mail($to, $email_subject, $email_body, $headers); 
    //redirect to the 'thank you' page 
} 
?> 

目前它將用戶重定向到一個新頁面,但我希望它允許JavaScript彈出成功/失敗消息,就像現代網站中使用的那樣。

下面是該消息的代碼(CSS和Javascript):

<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 

<style type="text/css"> 
/* Status Message */ 
.message { 
    display: none; 
    margin: 0 0 13px 0; 
    padding: 13px 13px 13px 52px; 
    background: url('icon_check.gif') left no-repeat #EFA; 
    background-position: 13px 5px; 
    border: solid 1px #BD8; ' 
    width: 300px; 
} 
</style> 

<script language="javascript" type="text/javascript"> 
$(document).ready(function(){ 
    $("#Button1").click(function(event){ 
    $(".message").show(); 
    $(".message").fadeOut(2500); 
    }); 
}); 
</script> 

和這裏的成功消息的HTML:

<div class="message">Your Invitation Request Has Been Received!</div> 

是否有可能做到這一點?過去兩天我在幾個地方尋找答案,我似乎無法改變正確的事情。任何幫助,將不勝感激。

回答

1

使用您當前的設置,最好的方法是使用查詢字符串重定向到註冊頁面,該字符串告訴頁面從那裏打開窗口。

header("Location: /signup.php?success=true"); 

,並在JS

<script> 

<?php 
if(isset($_GET['success']) && $_GET['success'] == 'true'){ 
    echo "window.open('/success.html', 'success', '[options],[..],[..]');"; 
} 
?> 

</script> 

另外,我建議使用filter_var驗證電子郵件。

filter_var('[email protected]', FILTER_VALIDATE_EMAIL) 
+0

感謝您的快速響應!我可以將該PHP代碼放在php文件的任何位置嗎?此外,註冊表單位於索引頁面,我會將「signup.php」更改爲「index.php」嗎?我對這個東西是全新的,所以我有點失落。 – Sharkbites 2012-04-24 21:31:20

+0

把'header()'代碼放在你有//重定向到'thank you'頁面的地方。如果之後有任何代碼,可以添加'exit();'來停止腳本的執行(但只有在將新用戶添加到數據庫後才能執行此操作)。您需要將signup.php更改爲index.php。但是,我會將您的完整域名添加到它(例如http(s)://example.com/?success = true)。 – honyovk 2012-04-24 21:36:31

+0

啊完美的你解決了重定向問題......現在想出如何輸入失敗信息,如果輸入的內容不是正確的電子郵件地址。當輸入到輸入框中的代碼不是正確的電子郵件地址時,代碼會重定向。 – Sharkbites 2012-04-24 22:01:32

0

最簡單的方法是將PHP郵件功能與HTML頁面結合起來。您可以使用AJAX將發送郵件PHP頁面加載到DIV中,該DIV將隨PHP函數的輸出結果一起覆蓋該DIV的內容。這可以讓你有沒有JS的用戶回退,因爲提交表單到PHP頁面仍然可以工作。

+0

謝謝您的迴應。我希望我知道如何去做。我對這個東西很新。 – Sharkbites 2012-04-24 21:33:56

相關問題