2012-03-17 5 views
1

Im возникают проблемы с PHP ЗАСЕДАНИИ varialbles моя система аутентификации работала отлично на моем XAMPP сервере, и теперь им проблемы, так как я перешел на BluehostPHP переменные сессии на Bluehost

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

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

вот код:

<?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'); 

?> 

ответ

2

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

Я честно не знаю, как ваш код работал на вашем локальном сервере.

+1

Его код работал на локальном сервере, поскольку он настроил буферизацию вывода. Думаю, это правильный ответ. Решение состоит в том, чтобы переместить '' непосредственно перед 'include ('frame.html');' или еще лучше поместить его в 'frame.html'. – DaveRandom

+0

спасибо, что сработали! – user1107703

1

расположен непосредственно внутри <?php вашего index.php .. .

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

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

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

+0

ok я получил ошибку, im gona отредактировал мое сообщение – user1107703

1

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

+0

i changed session.save_path в свою собственную папку – user1107703

+0

«Я изменил session.save_path на свою собственную папку» - и добавил правила доступа .htaccess, чтобы остановить их доступ через URI, я надеюсь :) – TerryE

Смежные вопросы