Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: реализация заставки при помощи сессий
 
 автор: Marina1   (08.08.2009 в 02:48)   письмо автору
 
 

Помогите пожалуйста!

Задача: сделать заставку для сайта.

есть флешка, которая после проигрывания запускает адрес http://macroleg.ru (без www),
ее прописала в файле http://macroleg.ru/index1.php

есть индексный файл http://macroleg.ru/index.php:

<?
 session_start
();
 
session_register('my_flash');

 if(
$_SESSION['my_flash'] == '1')
 {
        
// запускаем модули движка (битрикс)
 
}
 else
  {
       
$_SESSION['my_flash'] = '1';
       include(
"index1.php");
  
//     header("Location: http://macroleg.ru/index1.php");
   
}

?>


В итоге если набрать адрес http://macroleg.ru (без www) все работает: заставка отиграла и запустила сайт,

А если набрать адрес http://www.macroleg.ru (c www) заставка в ИЕ проигрывается два раза. Что-то непонятное в сессиях происходит не понимаю почему со второго раза он видет значение переменной.. (догадываюсь во флешке прописан жестко абсолютный путь сайта без WWW. И получается что при переходе сессия уже не видна. исходников флехи нету)

Помогите пожалуйста, у меня уже фантазии не хватает как решить эту проблему.. :,(

Или может подскажите другой способ запуска стартовой страницы index1.php, но при этом чтоб index.php оставалась индексной главной страницей.

  Ответить  
 
 автор: sim5   (08.08.2009 в 04:23)   письмо автору
 
   для: Marina1   (08.08.2009 в 02:48)
 

Вместо session_register('my_flash');, просто устанавливайте переменную:
$_SESSION['my_flash'] = 1;
В кавычки заключают строковые данные, числовые не неадо.
if($_SESSION['my_flash'] == 1)....
В сессии нет проблем как таковых, это вы создаете проблему. Как я понял, эта переменная просто у вас указывает на то, отдавалась ли пользователю флешка или нет? Если так, то:
<?
session_start
(); 
if(!isset(
$_SESSION['my_flash'])) { 
  
//отдаем флешку
  //и указываем, что она уже была у пользователя
  
$_SESSION['my_flash'] = 1;
} else { 
  
//иначе все остальное
  
include("index1.php");


А www на сессию не влияет.

  Ответить  
 
 автор: а-я   (08.08.2009 в 04:52)   письмо автору
 
   для: sim5   (08.08.2009 в 04:23)
 

>А www на сессию не влияет.

я б так не сказал

www.site.ru и site.ru - разные домены! хоть и алиасы.

и если сид идет в куки, и не указан ".site.ru" в настройках сессии,

то сид будет действовать только для одного домена!!!

  Ответить  
 
 автор: sim5   (08.08.2009 в 05:59)   письмо автору
 
   для: а-я   (08.08.2009 в 04:52)
 

Ну а при чем тут текущая сессия? Проблемы не сессии, проблемы с url запрашиваемой из флешки.

  Ответить  
 
 автор: а-я   (08.08.2009 в 06:13)   письмо автору
 
   для: sim5   (08.08.2009 в 05:59)
 

Честно говоря, не понял проблемы.
Зашел на сайт автора(opera, IE), вроде все нормально!
Может он как раз говорил,
Что 1ый раз он заходит на сайт без "www", а затем с "www"?

Можно указать домен в session.cookie_domain должно помочь.

  Ответить  
 
 автор: sim5   (08.08.2009 в 06:19)   письмо автору
 
   для: а-я   (08.08.2009 в 06:13)
 

Из автора: сть флешка, которая после проигрывания запускает адрес http://macroleg.ru (без www),

При чем тут сессия? Не она же запускает и делает перенаправление....

  Ответить  
 
 автор: а-я   (08.08.2009 в 06:35)   письмо автору
 
   для: sim5   (08.08.2009 в 06:19)
 

Как я понял.

1. запускается www.site.ru
2. создается сессия, регистр. указатель, СИД идет в куки с доменом www.site.ru
3. показывается флэшка.
4. флэшка перекидывает на site.ru (без www) - КУКИ для этого домена пусты!
5. по новой создается сессия и тому подобное включая как раз показа флэшки

Если мы укажем в session.cookie_domain ".site.ru" - то Куки будут на все поддомены вкл. наш www.site.ru

Или я опять что не понял?)

  Ответить  
 
 автор: sim5   (08.08.2009 в 06:49)   письмо автору
 
   для: а-я   (08.08.2009 в 06:35)
 

Хостер в силах сделать так, что и www.site.ru, и site.ru будет одно и тоже.

  Ответить  
 
 автор: а-я   (08.08.2009 в 07:07)   письмо автору
 
   для: sim5   (08.08.2009 в 06:49)
 

по-моему, для нас это будет казаться одним и тем же, но не для броузера. который смотрит на домен.

хотя может я ошибаюсь.

  Ответить  
 
 автор: sim5   (08.08.2009 в 07:52)   письмо автору
 
   для: а-я   (08.08.2009 в 07:07)
 

И для браузера тоже, по крайней мере у меня так на хосте.

  Ответить  
 
 автор: Marina1   (08.08.2009 в 08:21)   письмо автору
 
   для: sim5   (08.08.2009 в 07:52)
 

я думаю хостер тут не причем . :-\ так как глюк в самом ИЕ в Фаерфоксе работает нормально с www. почему два раза флеха проигрывается... я же припроигрыше создаю переменную а потом проверяю проиграла или нет. За куки не знаю не пробывала. может еще и с куки помудрить..

Всех благодарю за внимание :)

  Ответить  
 
 автор: а-я   (08.08.2009 в 08:43)   письмо автору
 
   для: Marina1   (08.08.2009 в 08:21)
 

Вы сначала удалите в "Фаерфоксе" старые куки и сразу зайдите с "www"

такая же реакция.

  Ответить  
 
 автор: sim5   (08.08.2009 в 08:48)   письмо автору
 
   для: а-я   (08.08.2009 в 08:43)
 

А если у пользователя они вообще отключены, тогда что?
Любой запрос, хоть с www, хоть без него, должен направлять браузер на один и тот же домен, где и лежат документы, и если это site.ru, то по именно на него будет идти перенаправление, именно с этого домена будет стартоваться сессия, и по барабану будут куки.

  Ответить  
 
 автор: а-я   (08.08.2009 в 09:10)   письмо автору
 
   для: sim5   (08.08.2009 в 08:48)
 

>А если у пользователя они вообще отключены, тогда что?

а Вы отключите и зайдите на сайт. он показывает только флэху!!!
потому что нету СИДа! ни в куках, мы их отключили, ни ГЕТом.. т.к. флэха просто скидывает на главную, без СИДа.

>Любой запрос, хоть с www, хоть без него, должен направлять браузер на один и тот же домен, где и лежат документы, и если это site.ru, то по именно на него будет идти перенаправление, именно с этого домена будет стартоваться сессия, и по барабану будут куки.

1. вообще-то по доменам web-сервер отправляет на главную папку хоста, а там по запросу на документ! а не на домен.
2. www.site.ru это алиас для site.ru, в конфигах можно NJcbsnj.site.ru - сделать алиасом для главного домена! - но это все разные домены!!! а броузер по умолчанию отправляет КУКИ только на текущий домен!

а он(домен) у нас меняется!!! в этом и проблема! я уже написал как можно решить..


UPDATE: может Вы говорите про переадресацию с www на основной домен!

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

  Ответить  
 
 автор: sim5   (08.08.2009 в 09:56)   письмо автору
 
   для: а-я   (08.08.2009 в 09:10)
 

Нет, я хочу сказать о том, что пользователь в конечном итоге попадает на site.ru, который и установит запустит сессию.
Нечто подобное было, когда после переезда с одного хоста на другой, на странице вызванной по адресу с www перестало работать меню, которое использовало куки, то есть его состяние сбрасывалось для пользователя, когда он заходил по адресу с www, а до этого был по адрему без www.
Хостер просто добавил в конфигурацию www.site.ru, при этом при запросе с www физически то обращение к скриптам идет на site.ru, хотя в браузер в адресе при этом видно www. Работают и сессии и куки, хотя их по прежнему устанавливает один и тот же скрипт, как и раньше - с site.ru. Все запросы (а пути относительные) отрабатывают корректо.
У автора же идет перенаправление совсем в дургое место для браузера. Возможно, если это возможно для флешь, указывать адрес как относительный путь.

  Ответить  
 
 автор: а-я   (08.08.2009 в 11:17)   письмо автору
 
   для: sim5   (08.08.2009 в 09:56)
 

скорее всего хостер просто передавал переменную HTTP_HOST один и тот же. у Вас хороший хостер... а у автора?

может решить данную проблему таким образом?
добавить вначале

<?
 
if($_SERVER['HTTP_HOST'] == 'www.macroleg.ru')
 
header('location: http://macroleg.ru');

// работаем дальше
?>

  Ответить  
 
 автор: Trianon   (08.08.2009 в 11:41)   письмо автору
 
   для: а-я   (08.08.2009 в 11:17)
 


<?
 
if($_SERVER['HTTP_HOST'] == 'www.macroleg.ru')
 {
     
header('location: http://macroleg.ru');
     exit(); 
// дальше не работаем!
 
}


?>

  Ответить  
 
 автор: а-я   (08.08.2009 в 11:55)   письмо автору
 
   для: Trianon   (08.08.2009 в 11:41)
 

спасибо.. как то совсем забыл про это...)

  Ответить  
 
 автор: sim5   (08.08.2009 в 11:55)   письмо автору
 
   для: а-я   (08.08.2009 в 11:17)
 

Вот именно, нужно "бороться" с url, а не с сессией или куками как таковыми.

PS. Не знаю, что там "хороший" хостер сделал :), но суть проблемы заключалось в том, что по домену с www куку не возможно было установить.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования