为什么AJAX会导致PHP会话崩溃?

时间:2019-06-21 04:48:41

标签: php jquery ajax

我头疼...在onkeyup情况下或其他情况下,我已经多次使用此代码行。 Ive之前曾通过onkeyup调用遇到过问题,但通过KeyUpDelay(function)解决了该问题。

使用此行代码搜索重复项。...

if (cat == 'cur') {

    $.post('searchDBajax.php',{rmDocDup: ""+type+"", rmid: ""+<? echo $row['id']; ?>+""}, function(data){
        if(data.length >0){
            alert("f*ck");
        }
    });

}

PHP方面...

if(isset($_POST['rmDocDup'])) {
    $type = $_POST['rmDocDup'];
    $rmid = $_POST['rmid'];
    $query = $db2->query("SELECT * FROM rmDocs WHERE rmid='$rmid' AND cat='cur' AND type='$type'");
    if (mysqli_num_rows($query) != 0 ) {
        echo "1";
    }
}

这将导致PHP会话崩溃。

代码与其他事件几乎相同。唯一的区别是这不会通过onkeyup事件来调用。

搜索时,我发现没有用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题!

运行该过程的PHP文件searchDBajax.php具有require(includes/config.inc.php);。配置文件将调用functions.inc.php文件。其中的会话功能。会话函数具有session_regenerate_id(true);。这是通过AJAX请求更改会话信息。

AJAX未发送标头。

我将会话功能更改为if (headers_sent()) {session_regenerate_id(true);},一切都很好。