数据库插入前的php头重定向

时间:2018-03-06 10:54:38

标签: php header

我的php header("Location: example.com")似乎在插入数据库查询之前(在一台计算机上)重定向。哪个imo很奇怪,因为我检查数据库在标头运行之前是否返回true。

这对我来说很好,但在我的朋友系统上,它似乎过早地重定向。如果我删除了header()函数和die()。它插入很好。

这被编码为mediawiki的扩展。我不知道问题出在这里。 Mediawiki有自己的数据库查询类和函数。

if ($_GET['action'] == 'postReply') {
    $threadid = $_POST['t_id'];
    $content = $_POST['content'];
    $postReply = postThreadReply($threadid, $username, $userid, 
$content);
    if ($postReply == 1) {
        header("Location: ?title=" . $title . "&t=" . $threadid . '#last');
        die();
    }

此代码适合阅读更轻松。

这是标题重定向过早的主要功能。 postThreadReply()执行一些检查并插入到正确的表中。如果每个查询返回true,则postThreadReply()返回1.

我不认为有必要使用更多代码,但如果有,请告诉我。 :)

所以我想知道我的代码或Mediawiki中是否有问题?或者这是header()函数的已知问题?我可以尝试其他方法吗?

这是我的第一个问题,所以如果我的问题不清楚或者我提供的代码不够,我很抱歉。

编辑:

postThreadReply()

function postThreadReply($threadid, $username, $userid, $t_post) {
    if (postExistDuplicate($threadid, $username, $userid, $t_post)) return 3;
    if (!threadExist($threadid)) return 4;
    $inpost = insertPost($threadid, $username, $userid, $t_post);
    if (!$inpost) return 2;
    return 1;
}

insertPost()

function insertPost($threadid, $username, $userid, $t_post) {
$datetime = date_create()->format('Y-m-d H:i:s');
$dbw = wfGetDB( DB_MASTER );
$res = $dbw->insert( 
    'disc_posts', 
    array(
        'id' => null,
        'thread_id' => $threadid,
        'author' => $username,
        'author_id' => $userid,
        'content' => $t_post,
        'posted' => $datetime,
        'deleted' => 0
    )
);
return $res;

}

^ Mediawikis进行查询的方式。

0 个答案:

没有答案