переменные php SESSION на bluehost - PullRequest
1 голос
/ 17 марта 2012

У меня проблемы с моими переменными php SESSION моя система аутентификации работала нормально на моем сервере xampp, и теперь у меня проблемы с тех пор, как я перешел на bluehost

обычно, если я открываю страницу, подобную index.php, она проверяет, вошли ли вы в систему и не отправляет ли вас на страницу входа, но это не работает и просто для тестирования я попытался повторить $_SESSION['username'], и он оказался пустым

Теперь я сделал то, что сказал ALEX, и получил эту ошибку: Невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с /home7/.../public_html/blog.php:4) в /home7/blogboua/public_html/blog.php в строке 22 * ​​1006 *

вот код:

<?php session_start(); ?>
<html>
<head>
<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL);
/*-----Connect to Database-----*/
 include ('connect_database_2.php');

//check if logged in
function isLoggedIn()
{
    if(isset($_SESSION['valid']) && $_SESSION['valid'])
        return true;
    return false;
}


//if the user has not logged in
if(!isLoggedIn())
{
    header('Location: login_form.html');
    die();
}

/* get username */
$username = $_SESSION['username'];


/*-----Include Navigation------*/
include ('frame.html');

?>

Ответы [ 3 ]

2 голосов
/ 17 марта 2012

Вы пытаетесь отправить заголовок Location после того, как уже отправили <html><head> в строках 2-3.Вы не можете сделать это.Заголовки должны быть отправлены перед отправкой любого вывода.

Честно говоря, я не знаю, как ваш код работал на вашем локальном сервере.

1 голос
/ 17 марта 2012

Если вы используете поставщика общих служб, такого как bluehost, вам нужно быть осторожным с вашими предположениями о продолжительности сеансов, поскольку эти поставщики хостинга будут собирать / очищать старые файлы user / tmp. IMO, самый простой способ избежать этого - объявить явный обработчик сеанса и сохранить свой контекст сеанса в MySQL D / B. Посмотрите PHP session_save_handle r обсуждения для примеров того, как это сделать.

1 голос
/ 17 марта 2012

Установите прямо внутри <?php вашего index.php ...

ini_set('display_errors', 'on');
error_reporting(E_ALL);

Затем перезагрузите index.php (ранее пустая страница ).

Он сообщит вам причину ошибки. Возможно, он не смог записать данные сеанса в /tmp/.

...