我的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进行查询的方式。