PHP/SQL 错误 : Possible race condition?

标签 php mysql sql ajax race-condition

我是 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");
        }
    });
});

    });
<小时/>

带有现场演示的网站 can be viewed here.

要登录,只需使用此电子邮件:asdf@gmail.com 和此密码:asdf123

预先感谢您的任何建议!

最佳答案

我不知道竞争条件(这很可能,但不应扰乱 session ,除非每次都得到regenerated)。不管怎样,如果我是你,我会在第一次点击后立即禁用赞成/反对按钮。

关于PHP/SQL 错误 : Possible race condition?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17509390/

相关文章:

java - 当发生约束违反异常时

mysql - 插入更新不同的列,同时在一个查询中保持其他所有内容相同

php - 在 for 循环中从 $_POST 获取数据

javascript - 如何在模态中刷新页面

php - "Mysql expects parameter 2 to be integer, string given in"错误类型

php - Laravel 连接查询使用 Laravel Eloquent

php - php 中没有显示空的 MySQL 查询

MySQL 特殊 ORDER BY

php - 在 mysql db 和 PHP 中 x 分钟后删除整行

mysql - 更改表上的 auto_increment 值的过程