Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Значение переменной в сессии=Undefined (http://www.flasher.ru/forum/showthread.php?t=96722)

alilu 05.06.2007 18:26

Значение переменной в сессии=Undefined
 
Задача:
1. из флеша передать в пхп значение переменной
2. в пхп сделать эту переменную глобальной
3. при загрузке другой страницы вызывать другой пхп файл и извлечь эту глобальную переменную
---
С отправкой и получением данных во флеш проблем нет (спасибо Loadvars)
После штудирования мануала по пхп написала два скрипта:
1. для создания глобальной переменной
Код:

<?
    $a=addslashes(trim($a));
    session_start();
    $_SESSION['var_a']=$a;
?>

2. для извлечения этой переменной
Код:

<?
    $b=$_SESSION['var_a'];
    echo 'res='.$b
?>

Естестно, ничего не работает. Поиск по форуму не дал вразумительных результатов, поскольку слабо представляю, что именно искать в данной ситуацию
Help me^-) please

Skubent 05.06.2007 18:44

Ну и откуда во втором примере возьмется сессия ?

ЗЫ. Не имеет отношения к проблеме. Надо привыкать писать полный php-тэг в начале скрипта. В смысле <?php.

alilu 05.06.2007 20:03

Эх, если бы я знала откуда ей там взятся, то наверняка она бы уже там появилась:-)Проблема в незнании, точнее непонимании

Kikasso 05.06.2007 20:10

Код:

@session_name("someName");
@session_start();
@session_register("var_a");
@session_register("var_b");


alilu 06.06.2007 11:15

Не совсем понимаю. Не в принципе нужна одна переменная в сессии
Т.е. получается, что в первом скрипте
Код:

<?php
    $a=addslashes(trim($a));
    session_name("alilu");
    session_start();
    session_register("var_a");
    $_SESSION["var_a"]=$a;
 
?>

А что делать со вторым скриптом чтобы он увидел сессию.......... не поняла

Skubent 06.06.2007 11:53

Kikasso, откуда такая древность берется ? Не учи человека плохому. И сам переучивайся. И никогда-никогда не ешь жел... не используй собаку.

alilu, session_start() что делает ? В какой момент скрипт стартует, в какой завершается ? В какое время исполняется первый скрипт, в какое время исполняется второй скрипт ? Что между ними общего ? Какие данные они получают от пользователя ?

Много вопросов получилось, конечно.

alilu 06.06.2007 15:46

Создала флеш файлик для проверки
Его содержимое:
1. _root.send_btn // кнопка для отправки
2. _root.load_btn // кнопка для загрузки
3. _root.send_txt// поле ввода значения переменной
4. _root.load_txt // поле для загрузки значения переменной
5. _root.msg_txt // поле для проверки что все ок
------------
Схема желаемой работы:
1. Вводим текст в поле ввода
2. нажимаем отправить ( работает send.php)
3. нажимаем загрузить (Работает load.php)
4. выводится значение
-------------------
во флеш
Код:

_root.send_btn.onRelease = function() {
        send_script.a = _root.send_txt.text;
        send_script.sendAndLoad("send.php", load_script, "POST");
        load_script.onLoad = function(ok:Boolean) {
                if (ok) {
                        msg = load_script.sstat;
                } else {
                        msg = "no_send";
                }
                _root.msg_txt.text = msg;
        };
};
_root.load_btn.onRelease = function() {
        loaded_script.load("load.php");
        loaded_script.onLoad = function(ok:Boolean) {
                if (ok) {
                        msg = loaded_script.sstat;
                } else {
                        msg = "no_load";
                }
                _root.load_txt.text = msg;
        };
};

Те самые php файлы
send.php
Код:

<?php
    $a=addslashes(trim($a));
    session_start();
    $_SESSION['var_a']=$a;
    $status="ok";
    echo 'sstat='.$status;
?>

Код:

<?php
    $b=$_SESSION['var_a'];
    echo 'sstat='.$b;
?>

вот вроде и вся ситуация

PS. все варс и лоадварс заранее объявлены

Skubent 06.06.2007 16:02

alilu, на волне предыдущего объяснения отвечу сам на свои вопросы. В дальнейшем надеюсь, что переписывать мануалы не придется.

>> session_start() что делает ?
Рассказывает скрипту, что надо запустить механизм сессий и заполнить массив $_SESSION, если надо/есть чем.

>> В какой момент скрипт стартует, в какой завершается ?
Скрипт send.php работает после нажатия юзером кнопки отправить.
В первой строке не $a=addslashes(trim($a));, а $a=addslashes(trim($_POST['a'])); - это к вопросу о том, что разработчик скрипта всегда должен знать, откуда берутся данные.
Во второй строке отдается команда запустить механизм сессий, а именно - создать уникальное имя сессии, послать пользователю заголовок с целью установить cookie, содержащую это самое имя и в третьих, проверить наличие и, если его нет, создать файл (в дефолтной конфигурации пхп) с именем вида sess_идентификатор _сессии.
В третьей строке в массив $_SESSION кладется переменная.
В четвертой строке переменная статус, в пятой ее вывод пользователю.
В шестой строке скрипт завершает работу, при этом содержимое массива $_SESSION складывается в созданный в строке два файл.

>> В какое время исполняется второй скрипт ?
Второй скрипт исполняется после того, как пользователь нажал кнопку загрузить. Для сервера - как бы быстро не нажимал кнопки пользователь - прошло огромное количество времени. О том, что когда-то работал первый скрипт, второй знать не знает. Как не знает и о том, что механизм сессий должен быть запущен.

>> Что между ними общего ?
Ничего. Вообще. Только желание разработчика, чтобы они (скрипты) работали с одними данными.

>> Какие данные они получают от пользователя ?
Помимо того, что явно передает в них разработчик, скрипты получают, cookie от пользователя - если, конечно, оные куки у пользователя установлены, - с идентификатором сессии.

Еще наводящие вопросы задавать ? Отвечать на них больше не буду :).

Kikasso 06.06.2007 17:01

Цитата:

Сообщение от Skubent
Kikasso, откуда такая древность берется ? Не учи человека плохому. И сам переучивайся. И никогда-никогда не ешь жел... не используй собаку.

Чем собачка-то не угодила? Вам больше warning'и нравятся? Напишите как по-модному, переучусь.

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

alilu 06.06.2007 17:03

можно еще пару наводящих вопросов, ответов не требуется:-) сама буду искать....... честно говоря уже голова кругом:-)

alilu 07.06.2007 01:39

ТОВАРИСЧИ! Причина всех бед обнаружена! Кодировку UTF-8 сменить на ANSI^-)
Спасибо вам:-)

Skubent 07.06.2007 13:08

Kikasso, использовать собаку - это все равно что зажимать нос и есть протухшее мясо с перцем. Мол, запаху не чувствую, вкус перцем отшибло, значит - нормальное мясо.

Skubent 07.06.2007 13:09

alilu, если причина в кодировке, то
а) код, приведенный тобой не тот, что работает на самом деле
б) имеют место быть специфические настройки пхп.


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

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