0

私は AJAX を使用したプログラミングの初心者であり、PHP プログラミングの初心者です。理由はわかりませんが、ユーザーが矢印をクリックして投稿を繰り返し非常に高速に「賛成」すると、PHP login_check はユーザーがログインしていないと判断します。通常の速度で矢印をクリックすると、プログラムは動作します。 、しかし連射すると変になります。

PHP コード:

<?php

include "db_connect.php";
include "functions.php";

sec_session_start();

これが競合状態の明確なケースであり、それを防ぐために何ができるか疑問に思っていました--

AJAX コード:

$(document).ready(function() {

$("#upvotearrow").click(function() {
    setTimeout(function() { }, 500);
    $resdiv=$("#upvotedownvote_resultalert");
    $content=$("#upvotedownvote_resultalert_content");
    $.ajax({
        type: "POST",
        url: "../secure/process_upvotedownvote.php",
        data: { vote: "upvote", poemid: $("#poemidfield").val() },
        dataType:"HTML"
    })
    .done(function(param) {
        if (param=="true_upvote") {
            $content.html("Upvote registered!");
            $resdiv.css("visibility", "visible");
        }

        else {
            $content.html("Invalid request");
            $resdiv.css("visibility", "visible");
        }
    });         
});

$("#downvotearrow").click(function() {
    setTimeout(function() { }, 500);
    $resdiv=$("#upvotedownvote_resultalert");
    $content=$("#upvotedownvote_resultalert_content");
    $.ajax({
        type: "POST", //POST data
        url: "../secure/process_upvotedownvote.php", //Secure upvote/downvote PHP file
        data: { vote: "downvote", poemid: $("#poemidfield").val() }, //Get type of vote and poem_id in URL
        dataType:"HTML" //Set datatype as HTML to send back params to AJAX function
    })
    .done(function(param) { //Param- variable returned by PHP file
        if (param=="true_downvote") {
            $content.html("Downvote registered!");
            $resdiv.css("visibility", "visible");
        }

        else {
            $content.html("Invalid request");
            $resdiv.css("visibility", "visible");
        }
    });
});

    });

ライブデモのあるウェブサイトはこちらからご覧いただけます。

ログインするには、このメールアドレス: asdf@gmail.com とパスワード: asdf123 を使用してください

アドバイスをよろしくお願いします!

4

1 に答える 1

1

競合状態についてはわかりません (可能性は高いですが、毎回再生成されない限り、セッションを台無しにするべきではありません)。とにかく、もし私があなただったら、最初のクリックの直後に賛成/反対ボタンを無効にします。

于 2013-07-07T05:07:04.757 に答える