cPanel PHP 5.1 до 5.4 изменить, заголовок (расположение: index.php)

0

Я перемещаю сайт на хостинг cPanel и с php 5.1 до 5.4. Единственное, что не работает с этим движением, - это возвращение на страницу index.php после ввода данных MySql. Данные вставлены ОК, но я получаю пустую страницу вместо обновления страницы index.php.

Я изучил форум и использовал идеи, которые я заметил: удаленные пробелы в PHP-коде; переместил заголовок (Location: index.php) в скрипт; занял место между Location: и index.php, но не смог получить страницу index.php для отображения после вставки. URL-адрес находится в строке браузера, и если я нажму на него, страница обновится. Это происходило автоматически в прошлом.

Вот код:

<?php
function renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error)
{
?>
    <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script type="text/javascript">
    $(function() {
        $('#datepicker').datepicker({dateFormat: 'MM d, yy', altField: '#dbDate', altFormat: 'yy-mm-dd'});
    });
    </script>
<?php 
}

include('connect to database');

if (isset($_POST['submit']))
{ 
    $mscdate = mysqli_real_escape_string(htmlspecialchars($_POST['mscdate']));
    $mscname = mysqli_real_escape_string(htmlspecialchars($_POST['mscname']));
    $mscaffirm = mysqli_real_escape_string(htmlspecialchars($_POST['mscaffirm']));
    $mscstatus = mysqli_real_escape_string(htmlspecialchars($_POST['mscstatus']));
    if ($mscdate == '' || $mscname == '' || $mscaffirm == '')
    {
    $error = 'ERROR: Please fill in all required fields!';
    renderForm($mscdate, $mscname, $mscaffirm, $mscstatus, $error);
    } else {
        mysqli_query("INSERT mscrides SET mscdate='$mscdate', mscname='$mscname', mscaffirm='$mscaffirm', mscstatus='$mscstatus'")
        or die(mysqli_error()); 
        header("Location:index.php"); 
    }
}else { // if the form hasn't been submitted, display the form
renderForm('','','','','');
}
?>
Теги:

2 ответа

0

Вы отправляете перенаправление HTTP-адреса Location в браузер, не говоря также о том, что PHP прекращает выполнение, что обычно делается с помощью exit(). В приложениях PHP это обычно приводит к условию гонки, которое зависит от широкого спектра факторов, в основном от скорости интернет/сети, относительно того, работает ли перенаправление.

Гонка конкретно, какая из них происходит сначала, после заголовка Location:

  • Браузер получает перенаправление и отключает соединение (перенаправление будет работать)
  • Сервер отправляет тело HTML в операцию GET (перенаправление может завершиться неудачно, может зависеть и от браузера)

Наличие явного exit() является хорошей практикой, даже если вы считаете, что ваш скрипт закончится естественным образом, если у вас есть обработчик append или обработчик выключения.

0

Попробуйте добавить ob_start() в верхней части кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню