下面的代码提交了一个帖子并重定向到另一个页面。邮件已提交,行在数据库中生效,但在submiiting post后我无法重定向。
error_reporting('E_ALL ^ E_NOTICE');
if(isset($_POST['submit'])) {
$title=strip_tags($_POST['title']);
$body=($_POST['body']);
$category=$_POST['category'];
if (empty($_POST['category'])) {
$er = "Please select a category from the options";
}
else if($category != "Controversies" && $category != "Entertainment" && $category != "Health" && $category != "Politics" && $category != "Lifestyle" && $category != "Technology" && $category != "Sports" && $category != "Travel"){
$er = "Please select a valid category";
}
else if (strlen($title) < 5) {
$er = "Make sure title is more than 5 characters";
}
else if (strlen($title) > 100 ) {
$er = "Make sure title is not more than 100 characters";
}
else {
$stmt = $db->prepare("INSERT INTO posts (status,userid, title, body,category) VALUES (:status,:userid,:title,:body,:category)");
$stmt->execute(array(':userid'=>$userid,':status'=>active,':title'=>$title,':body'=>$body,':category'=>$category));
if ($stmt->rowCount() > 0) {
header("Location: mains.php");
exit();
}
else {
$er = 'Some error occured please try again!';
}
}
}
如果我使用header("Location: mains.php");
代替$er = Post success
,我会在提交帖子后看到消息。那么这里的标题有什么问题。为什么代码不会重定向到mains.php
答案 0 :(得分:1)
关于你的评论:
感谢它工作但任何PHP解决方案?用户可以禁用javascript
echo '<script>';
echo 'window.location.href="mains.php"'; //Javascript Redirect
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url=mains.php" />'; //Incase of Javascript disabled
echo '</noscript>';
答案 1 :(得分:0)
你需要在标题之后尽快写死:
header("location: mains.php");
die();
答案 2 :(得分:0)
尝试在代码顶部添加ob_start();
,即error_reporting('E_ALL ^ E_NOTICE');
语句
答案 3 :(得分:0)
首先回显$stmt->rowCount()
以检查它是否返回值。如果它返回大于零的值,则在调用exit;
函数后添加header()
语句。
if ($stmt->rowCount() > 0) {
header("Location: mains.php");
exit;
}
else {
$er = "Some error occured please try again!";
}
答案 4 :(得分:0)
//编辑
我刚刚注意到你的标题代码在else语句中,它可以 在真实之前由if语句引起。
你应该把“死();”在您的标题代码之后 所以PHP不会继续运行代码 并可能中断设置标题。 并且请尝试使用绝对URL,因为它有时会导致 PHP的问题。
代码:
header("Location: http://www.website.com/mains.php");
die();
答案 5 :(得分:0)
尝试使用javascript location.href
,如下所示:
echo '<script>location.href = "example.com/mains.php";</script>';
而不是
header("Location: mains.php");