Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   PHP (http://www.flasher.ru/forum/forumdisplay.php?f=20)
-   -   таймер (http://www.flasher.ru/forum/showthread.php?t=34274)

eugesh 10.07.2002 23:29

таймер
 
У меня проблема с сессиями.
Если не стоит автоматическая переадресация через header, все работает корректно (регистрируются все необходимые переменные). А с header'ом ни в какую. Вот я и подумал о том, чтобы сделать таймер - задержался на странице на пару сек и пошел дальше.
Но вот проблема - не знаю с какого конца взятся... Подскажите функцию, через которую это можно реализовать.

advocat 11.07.2002 01:40

Собственно, это проблема по моему не хеадера! пхп исполняется на сервере, и пока не исполнится все, что стоит перед header() он дальше не пойдет. хотя смотря как ты пишешь. Еще одно сессия вызваная через функцию регистрируется, но ее переменные нет !
пример. у тебя есть в файле
Код:

function newsess() {
  session_register("sesiya");
  $sesiya = "456654";
}

и если ты вызываешь из другого файла эту функцию, то у тебя сессия регистрируется а переменная $sesiya нет !
может я че неправильно понимаю, тогда свети код ...

eugesh 12.07.2002 05:58

Я делаю и-нет магазин. Проблема в том, что товар никогда не кладется в корзину с первого раза, а дальше все нормально...
По-моему сессия регистрируется session_start'ом, а функций я здесь не использую (это отдельный файл).
В чем проблема я не понимаю...

Вот код...

session_start();
Здась задаются все переменные;
session_register ("z","colors","am");
header ("Location:$back");

Без header'а все работает идеально...

eugesh 12.07.2002 06:03

Вообще я думаю, что лучше зделать окошко в котором будет написанно, что товар добавлен в казину, а сек через 10-15 происходила автоматическая переброска обратно...
Но какую ф-ию для этого подпрячь я не представляю...

ZJA 12.07.2002 11:19

а зачем хедеры, если не секрет?
 
2eugesh я с похожей проблемой сталкивался, но у меня как-то без заголовков все обошлось, и окон не надо дополнительных, надо всего лишь чтоб при любом переходе от страницы к странице, если на странице есть форма(заказа например) - то она долна сабмититься, а уже скрипт решает чего юзер забил в нее(и чего не забил) и что он этим хотел сказать))) разумеется все страницы с сессиями и если пользователь что-то дельное забил, то это регистрируется, например забил: товара по 7 wm 3 штуки и ушел (не нажав кнопку добавить в корзину) на форум на этом сайте или новости почитать, но когда он переходил со страницы заказа на страницу форума, форма уже связалась, и скрипт запомнил в сессии что вроде пользователь хочет это купить, но еще не надумал окончательно, если пользователь вернеться, все циферки и буковки подставяться наместо и ему не придется это по второму разу забивать. Ну это так просто пример, все это можно варьировать как угодно.
2advokat да, описанная штука на счет переменных внутри ф-ций имеет место быть и я решил эту проблему сделав переменную глобальной, если есть у кого более рульное решение - предлагайте. Кстати это достаточно сильно зависит от версии php и конфы, т.к. некоторые версии поддерживают массивы навроде $HTTP_SESSION_VARS/$_SESSION - которые по умолчанию суперглобальные и т.о. все переменные сессии становятся доступными в любой точке скрипта, даже если регистрировались они внутри ф-ции из другого файла. На это весьма советую посмотреть примерчики на www.php.net

advocat 15.07.2002 14:22

Такс, а теперь разберем все по порядку ! Да действительно имеет место в новых версиях пхп глобальные переменные по умолчанию отключены, но если у нас есть файл например conf.php в нем есть переменная $color = "red"; то если мы создаем какой нибудь файл типа:
include_once("conf.php");
global $color;
то наща переменная остается начальной независимо от того глобальнные переменные по умолчанию включены или выключены! Это уже проверено, на версии 4.21 которая по default настроена ...
Далее, если мы регистрируем сессию и в сессии переменную, то при любом дальнейшем использовании этой сессии, а она используется до того момента, как ее убить или закрыть окно, то наша переменная зарегистрированная в сессии остается ! Но правда нелишним будет в каждом файле проставить session_start();
какие еще вопросы будут ?

2 eugesh :
только что проверил одну фичу ! если сделать так, то от хеадера ничего независит !
Код:

session_start();
if (session_register ("z","colors","am")) {
  header ("Location:$back");
  exit;
}



Часовой пояс GMT +4, время: 19:55.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.