Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 00:08   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию Не работают сессии...

Доброе время суток. Товарищи программисты подскажите пожалуйста в чем может быть дело. У меня есть свой сайт сделанный на php. В нем очень многое завязано на сессиях. Проблема в том, что переменные не сохраняются в сессиях. Вернее на локальной версии сайта (под апачем) все работает, а на хостинге, почему-то сессии ничего не сохраняют. Я сначала подумал, что дело в настройках php на хостинге...но наваял быстро маленький скрипт работающий с сессиями и вуаля...все работает. Привести пример кода с сайта..весьма затруднительная задача, так как там очень много взаимосвязанных скриптов...ну просто подскажите, что можно было сделать не так, что бы сессии не работали? Проще говоря, какая это могла быть ошибка?

... Немного подумав, решил таки выложить небольшой кусок кода. Это код из скрипта авторизации.
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Вход в панель адсинистратора</title>
<script src="javascripts/prototype.js" type="text/javascript"></script>
<script src="javascripts/scriptaculous/effects.js" type="text/javascript"></script>
<script src="javascripts/glassbox/glassbox.js" type="text/javascript"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">
body { 
  background: url( images/bg114.jpg );
  font-family:Arial, Helvetica, sans-serif;
}
#myBox_contentBoxBg {
	filter: alpha(opacity=50);
	-moz-opacity:.50;
	opacity:.50;
}
#myBox_content {
  padding: 20px; 
}
#myBox h3 {
  font-size: 17px;
  margin: 0px; 
  text-align: center
}
</style>



<script type="text/javascript">
path_to_root_dir = "/";
function flashnotice() {
	var myBox = new GlassBox();
	myBox.init( 'myBox', '500px', '100px', 'hidden', '', true, true );
	myBox.lbo( false, 0.50 ); 
	myBox.appear(3000);

}
$(document).observe("dom:loaded", function(){
	flashnotice();
setTimeout('document.location = "../admin/cp/"', 4000);
});

</script>
</head>

<body scroll="no">

<?
include('../lyb/dbwc.inc');
include('../lyb/users.inc');
$activator=autorization($login,md5($password));
$uid=get_userid($login,md5($password));
if (usergroup($login,md5($password))=="Admin"){

@session_start();
$_SESSION["activator"] = $activator;
$_SESSION["uid"]   = $uid;


 echo "<div id='myBox' class='glassbox'>";
 echo  "<h3>Вход в панель администратора</h3>";
 echo  "";
 echo "</div>";

} else{
 echo "<div id='myBox' class='glassbox'><center><h3>Доступ запрещен!</h3></center></div>";
//echo "<script type=\"text/javascript\"> setTimeout('document.location = \"../\"', 2000);</script>";
}
?>
</body>
</html>
Однако после, в переменных сессии будет пусто. Хотя функции работают правильно и действительно возвращают значения.
prizrak1390 вне форума Ответить с цитированием
Старый 05.11.2010, 01:01   #2
xDyPx
Форумчанин
 
Аватар для xDyPx
 
Регистрация: 21.01.2009
Сообщений: 148
По умолчанию

session_start(); - нужно писать в самой верхней/первой строчке. То есть:
Код:
<? 
session_start(); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
...
МОЙ САЙТ
Компьютер позволяет решать все те проблемы, которые до появления компьютера не существовали.
xDyPx вне форума Ответить с цитированием
Старый 05.11.2010, 01:24   #3
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

xDyPx, не помогает. Вот примера ради залил на хостинг 2 скрипта. Index.php и index2.php...

Index.php
Код:
<?
@session_start();
$_SESSION["demo"]="TEST_SESSION";
echo "<a href=\"index2.php.php\">проверка</a>";
?>
Index2.php
Код:
<?
@session_start();
echo "Session:".$_SESSION["demo"];
?>
Заходим в index.php, жмем ссылочку и после загрузки index2.php, получаем:
Цитата:
Session:
Вот. То есть вообще сессии не пашут..я поспешил с выводом.Однако если в index.php прописать
Код:
 echo "Session:".$_SESSION["demo"];
, то мы получим искомое значение, однако в index2, значение пустое.
prizrak1390 вне форума Ответить с цитированием
Старый 05.11.2010, 08:16   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

ну для начала странно вот это
Код:
echo "<a href=\"index2.php.php\">проверка</a>";
...
потом сделайте так, без подавления ошибко... посмотрите - не выдаст ли ошибку заголовка

PHP код:
session_start(); 
проверьте на наличие в начале файла пробелов или инфх лишних символов типа BOF для UTF8
ADSoft вне форума Ответить с цитированием
Старый 05.11.2010, 08:46   #5
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Ахахах!! Просто жесть...ребят вот скажите...

Почему
Код:
 @session_start();
Не работает, а:
Код:
session_start();
пашет нормально??
Неужели подавление ошибок, может как-то влиять даже и на работу вызываемой функции?? Жесть.
prizrak1390 вне форума Ответить с цитированием
Старый 05.11.2010, 13:30   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,150
По умолчанию

может.... особенно в случае с сессиями
ибо перед вызовом сессии нельзя ничего выводить
ADSoft вне форума Ответить с цитированием
Старый 05.11.2010, 13:55   #7
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

ADSoft, пожалуй...
Надо посмотреть на сайте изготовителя... Мне аж интересно.
prizrak1390 вне форума Ответить с цитированием
Старый 06.11.2010, 02:33   #8
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

При программировании на PHP есть несколько страшных престрашных ошибок, которые совершают новички. Одна из них - register_globals On, а вторая @. Есть ещё множество других, но если одна из этих ошибок совершается - можно сразу скрипт удалять. Остальное уже неважно.

Для тугодумов: подавление ошибок есть ужасное зло. Пожалуйста, никогда этого не делайте. Благо в PHP есть обработчики сообщений об ошибках, с помощью которых ошибку можно оформить как угодно, но только не @.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 07.11.2010, 13:14   #9
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

Johnatan, почему "@" использовать для подавления ошибок нельзя? Объясните пожалуйста.
prizrak1390 вне форума Ответить с цитированием
Старый 07.11.2010, 14:32   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от prizrak1390 Посмотреть сообщение
почему "@" использовать для подавления ошибок нельзя? Объясните пожалуйста.
Потому,что ошибки в коде нужно исправлять,а не подавлять(скрывать).
сокрытие проблемы != решение проблемы.

Постоянное использование @ в качестве "лекарства от ошибок" - это прямой путь к т.н. "быдлокоду".

Код не должен содержать ошибок.
При этом совершенно не важно - этот код вы пишете для себя,или для Клиента.
Не может программист писать "для себя" грязный код,а "для Клиента" - чистый код,так не бывает.
Тут срабатывает сила привычки,которые вы сами у себя выработаете в процессе обучения и практики - вот тут и важно не заработать себе "вредных привычек" (вроде использования @).
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работают сессии? Яр|/||< (^_^) PHP 6 14.07.2010 12:36
Сессии L_M PHP 3 06.06.2009 10:27
Сессии limon PHP 19 29.11.2008 22:46