0

JSONを使用して自分のサイトからメールを送信することに取り組んでいます。コントロールを介して送信するだけで、私が行っている<form>DIYの「あなたは人間ですか」検証をバイパスするように見えるため、このようにしています。

<script type="text/javascript">
    $("#contact-submit").click(function() {
        if ($("#contact-captcha").text != "green") {
            $("#contact-captcha").text = "Incorrect";
            $("#contact-captcha").css("border-color", "#7c0707");
        }
        else
        {
            sendMail();
        }
    });

    function sendMail() {
        $.ajax({
            type: "POST",
            url: 'includes/contact.php',
            data: { to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() }
        });
    }
</script>

問題は、上の JSON データを読み取る方法がわからないことcontact.phpです。

PHPコードでJSONを定義し、json_decode()を使用してそれを読み取るチュートリアルを見てきましたが、そこでJSONを定義できないため、役に立ちません。

ここで JSON を読み取る方法について、誰かがガイダンスを提供できますか? クエリ文字列を使用することを考えましたが、ここでそれを行う方法がわかりません。

どんな助けでも大歓迎です。

前もって感謝します!

4

3 に答える 3

2

使用時

data: { to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() }

$_POST['to']$_POST['from']などでデータを取得します。

より良い方法 (まだ JSON メソッドではありません) は、次のようなものを使用することです。

var serialized = $("form").serialize();
serialized.to = "you@example.com";
$.ajax { ... data: serialized ... }

入力フィールドの属性はfromsubject、およびです。messagename

From: <input type="text" name="from"/>

JSON を送信したい場合 (送信する理由がわかりません)、次のようにできます。

json = JSON.stringify({ to: 'me@this.com', from: $('#contact-email').text(), subject: $('#contact-subject').val(), message: $('#contact-message').val() });

を使用して送信しdata: { json: json }、最後に実行します

json_decode($_POST['json']);

連想配列を取得します。

于 2012-12-29T14:15:50.190 に答える
0

contacts.phpで

print_r($_POST)

または、Firebugを使用して送信中にコンソールにチェックインすると、データが適切に送信されているかどうか(または、JSONであるかどうかなど)を簡単に確認できます。

(「人間の検証」チェックをどのように行っているかはわかりませんが、フィールド値$( "#contact-captcha")。text!= "green"をチェックするのは正しい方法ではありません(改ざんしてバイパスするのは簡単です) 「ランダムな」テキストを使用してサーバー側でハッシュを作成し、セッション(またはフォームに送信)する必要があります。ユーザーはテキストを入力し、POSTとしてサーバーに送信する必要があります。最後に確認します。ユーザーがテキストを入力してハッシュし、作成したテキストと比較します。正しく実行している場合は無視してください。^^ ")

于 2012-12-29T14:21:35.260 に答える
0

JSON を使用する必要がない場合は、この方法で行うことができます。

データをcontacts.phpに送信するために使用したjqueryコードと次のPHPコードを使用します。

Contact.php で

if(isset($_POST['to']) && $_POST['to'] != ''){

    $filterTO = $_POST['to'];

    //filter value and get filtered value back in $filterTO here and use it further
}

他の変数も同様に使用できます。

: 使用前に変数をフィルタリングすることを強くお勧めします。あなたにとって問題だった部分だけを示しました。これは標準プロセス全体ではありません。

于 2012-12-29T14:26:35.417 に答える