2015-12-30 3 views
0

Код ниже представляет сообщение и перенаправляет на другую страницу. Сообщение отправляется, строки выполняются в базе данных, но я не могу получить перенаправление после отправки сообщения.Почему мой код не перенаправляет пользователя на нужную страницу?

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

$ stmt-> сверку() возвращает что-то? –

+0

@AmitRajput yes, как я уже сказал, если вместо 'header (" Location: mains.php ");' I use '$ er = Post success 'Я вижу сообщение после отправки сообщения. Итак, что здесь не так с заголовком. Почему код не перенаправляется на main.php –

+0

Попробуйте использовать javascript 'location.href' – Thamilan

ответ

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>'; 
0

Вы должны написать умереть вскоре после заголовка, как это:

header("location: mains.php"); 
die(); 
+0

Я использую exit, но это не ответ –

+0

, то, пожалуйста, обновите свой вопрос. И да, вы можете использовать перенаправление javascript, если заголовок не работает в вашем scenerio –

0

Попробуйте добавить ob_start(); в верхней части коды, т.е. до error_reporting('E_ALL^E_NOTICE'); заявления

0

Первого эха $stmt->rowCount(), чтобы проверить, возвращает ли оно значение. Если он возвращает значение больше нуля, то добавьте exit; после вызова функции header().

if ($stmt->rowCount() > 0) { 
    header("Location: mains.php"); 
    exit; 
} 
else { 
    $er = "Some error occured please try again!"; 
} 
0

// Редактировать

Я также только что заметил, что вы заголовок код в другое заявление, оно может быть вызвано, если заявление, прежде чем быть верным.

Вы должны положить «die()»; после вашего кода заголовка , поэтому PHP не продолжает работать с кодом и, возможно, прерывает настройку заголовка. , а также, пожалуйста, используйте абсолютный URL-адрес, поскольку иногда это может вызвать проблемы с PHP с .

Код:

header("Location: http://www.website.com/mains.php"); 
die(); 
0

Попробуйте использовать JavaScript location.href, как показано ниже:

echo '<script>location.href = "example.com/mains.php";</script>'; 

Вместо

header("Location: mains.php");