2012-04-24 7 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> 

それがこれを行うことは可能ですか?私は過去2日間の答えをいくつかの場所で見てきましたが、正しいことを変えることができません。どんな助けもありがとう。

答えて

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

+0

'header()'コードを 'thank you 'page'にリダイレクトします。その後にコードがある場合は、 'exit();'を追加してスクリプトの実行を停止します(データベースに新しいユーザを追加した後にのみ行います)。 signup.phpをindex.phpに変更する必要があります。ただし、完全なドメイン名を追加します(例:http(s)://example.com/?success = true)。 – honyovk

+0

ああ、あなたはリダイレクトの問題を修正しました。入力されたものが適切な電子メールアドレスでない場合、どのように失敗メッセージを投稿するかを理解するようになりました。入力ボックスに入力されたものが正しい電子メールアドレスでない場合、コードはリダイレクトされます。 – Sharkbites

0

これを行う最も簡単な方法は、PHPメール関数をHTMLページと組み合わせることです。 AJAXを使用してメール送信のPHPページをDIVにロードすると、そのDIVの内容をPHP関数の出力結果が何であれ上書きします。これにより、PHPページにフォームを送信することができますので、JSなしでユーザーにフォールバックすることができます。

+0

ありがとうございます。私はそれをどうやって行うのか知っていればいいと思う。私はこのことにかなり新しいです。 – Sharkbites

関連する問題