PDA

Просмотр полной версии : Как в одном скрипте отправить и картинку и переменные?


uri-uri
01.06.2003, 21:03
Флэш передаёт запрос:
loadMovie('url/myDB.php', 'myMC', 'POST');
соответственно передаются переменные:
id=1; // идентификатор картинки
comment=''; // текстовый комментарий к картинке

myDB.php делает запрос в таблицу бд по ключу id,
достаёт имя_файла_с_картинкой (pathname) и comment.
Дальше отправляем картинку:
Header ("Content-type: image/jpeg");
$fp= fopen($pathname, "rb");
fpassthru($fp);

Дальше мне нужно отправить comment.
Как это сделать?
echo '&comment='.$comment;
конечно не работает. Подозреваю, что перед этой строкой
нужно прописать другой заголовок или может как-то иначе?

Книга "Разработка Web-приложений на PHP и mySQL", Лаура Томсон, Люк Веллинг.
стр.346(левая в развороте) "...имеется возможность переслать несколько HTTP-заголовков и произвести несколько вызовов функции header() в одном и том же сценарии..."
стр347(правая в том же развороте) "...Посколько заголовок может быть переслан лиш один раз и это единственный способ сообщить броузеру, что передаётся изображение..."
Короче, я совсем запутался.

Сейчас я делаю так: из Флэш идут запросы 2-м РНР-файлам, они !оба лезут в таблицу!, один возвращяет картинку, второй - переменные. Работает. Но, думаю, за такое решение меня метлой гнать надо из кодинга.
Подскажите, как это правильно сделать (ну я не про метлу :D , а о том, что выше).

Самурай
02.06.2003, 00:44
ты когданибудь выдел в новом окне с картинкой (только картинкой текст???) тотоже...

http://ua2.php.net/manual/ru/function.header.php

uri-uri
02.06.2003, 01:06
2 Pejone
Ну ты и реактивный. Скажите, мил. человек, у Вас в роду Нео небыло?
Пока я писал и отослал ответ в другом топике, - смотрю - а там уже твой!

По делу: Ты хоть понял сам, что написал?
Ты когданибудь видел в новом окне с текстом ( только текстом - картинку???) тотоже... :D

Спасибо за линьк. Особенно в ём (линке) умиляет, что весть техт на англицком, а все примечания начинаются так:

Замечание: There is a bug in Microsoft Internet Explorer 4.01 that prevents this from ...

Типа, шоб було, шоб зналы... :D

Самурай
02.06.2003, 01:12
Оригинал написал(а) uri-uri
2 Pejone
Ну ты и реактивный. Скажите, мил. человек, у Вас в роду Нео небыло?
я внебрачный сын нео и троицы...

Оригинал написал(а) uri-uri

Пока я писал и отослал ответ в другом топике, - смотрю - а там уже твой!

это нададо же...

Оригинал написал(а) uri-uri

По делу: Ты хоть понял сам, что написал?
Ты когданибудь видел в новом окне с текстом ( только текстом - картинку???) тотоже... :D
http://www.flasher.ru/forum/sets/boeng/smilies/frown.gif
впихни сюда плейн текст я тебе памятник поставлю...

Оригинал написал(а) uri-uri

Спасибо за линьк. Особенно в ём (линке) умиляет, что весть техт на англицком, а все примечания начинаются так:

хм... по англицки не читаем... ну что ж тут медицина бессильна... хотя... www.php.net.ua

Оригинал написал(а) uri-uri

Замечание: There is a bug in Microsoft Internet Explorer 4.01 that prevents this from ...

ты в жизни описание багов не читал?

Оригинал написал(а) uri-uri

Типа, шоб було, шоб зналы... :D

тебе знать явно не помешает...

uri-uri
02.06.2003, 03:00
Конкретизирую вопрос:
Если нужно отправить во Флэш и картинку и параметры(комментарии к ней), придётся полюбому делать 2 запроса.
Но запроса к таблице в базе, где хранится путь к картинке и содержимое параметров достаточно одного.

Я додумался до решения путём сессий. Смысл следующий:
==================
myFlash:
при нажатии на кнопку
1-loadMovie('my1.php?id='+id, 'myMC1');
2-loadVar('my2.php?id='+id, 'myMC2');

my1.php:
Открываем сессию для этого id
Регистрируем параметры запроса, как переменные сессии.
Лезем в базу и достаём по ключу id ВСЁ(и картинку и параметры).
Сохраняем значения параметров из базы в переменных сессии (устанавливаем их)
Отправляем картинку.

my2.php:
При поступлении запроса на переменные
копируем параметры из сессии и отправляем во флэш
Ликвидируем сессию.
==================
Может ли 2-й запрос начать обрабатываться прежде, чем при обработке 1-го не будут установлены переменные сессии? Или он начнёт обрабатываться только по окончании первого?

Может посоветуете более оптимальный вариант?

Crazy
02.06.2003, 11:32
Оригинал написал(а) uri-uri
1-loadMovie('my1.php?id='+id, 'myMC1');
2-loadVar('my2.php?id='+id, 'myMC2');

Если мне не изменяет память, эти операции асинхронны. Соответственно, есть шанс, что скрипты отработают в обратном порядке. :)

uri-uri
03.06.2003, 01:30
Неужели нельзя 1-ым скриптом считать ВСЁ (и картинку и комментарии ) из мускула и сохранить для второго скрипта в МОЗГЕ? Перерыл всё и нашёл только упоминания о записи/чтении в файл. Сессии - это сериализации, опять же - чтение/запись в файл
Но, и ежу понятно что файловые операции длиньше и ранимее для диска, чем работа с МОЗГОМ. Странно, что ничего про это не могу найти. Я в курсе, что HTTP - протокол БЕЗ СОХРАНЕНИЯ состояния. Но ведь речь ни о нём, а о внутрисерверных транзакциях. Если допустимо писать в файл, то почему нельзя выделить и работать с локальной областью памяти. Есть же тип таблиц мускула, которые размещаются в оперативке. ???? :confused:

uri-uri
03.06.2003, 01:35
2 Crazy
Я опытным путём (метками времени) определил, что это так. Но не до такой степени, что-бы в обратном порядке. Второй запрос начинает обрабатываться после первого. Иначе представь какой бардак - с какой страницы на какую переходит броузер?

Crazy
03.06.2003, 02:37
Оригинал написал(а) uri-uri
Иначе представь какой бардак - с какой страницы на какую переходит броузер?

И часто тебе удается вбить а адресную строку браузера сразу два URL? :)

Механизм, между прочим, прост: если TCP-пакет с первым запросом в пути потеряется, то за время таймаута может успеть уйти второй запрос. Соответственно, дойдет он раньше, чем перепосланная копия первого. :)

uri-uri
03.06.2003, 04:33
2 Crazy
Я это делаю нажатием на 1 кнопку во флэш.

Механизм, между прочим, прост: если TCP-пакет с первым запросом в пути потеряется, то за время таймаута может успеть уйти второй запрос. Соответственно, дойдет он раньше, чем перепосланная копия первого.

Вопрос: что значит "перепосланная" ? Это флэш должен контролировать и повторять запрос, или броузер? О чём ты? Можно подробнее. Я хочу держать "доходимость" пакетов под контролем. Иначе неизбежны ошибки :(((

Crazy
03.06.2003, 10:57
Оригинал написал(а) uri-uri
Вопрос: что значит "перепосланная" ?

Тебе стОит почитать, как работает протокол TCP.

Это флэш должен контролировать и повторять запрос, или броузер?

Для простоты будем считать, что это делает сетевой драйвер.

Я хочу держать "доходимость" пакетов под контролем. Иначе неизбежны ошибки :(((

Контроль доходимости осуществляет TCP. Автоматически.

nagash
12.06.2003, 01:55
мдя...
а ещё очень хочется чтобы ненадо было при этом всём к интернету подключаться...
а то...
мдя...

uri-uri
16.06.2003, 06:26
2 nagash

Когда с сервака возвращается html, идут запросы к Апачу для возврата каждой из картинок, имеющихся в нём (href=). Но в html уже находится соответствующий текст. (Либо статический, либо вставляемый серверным скриптом). Но в любом случае - что-бы увидеть страницу, достаточно 1 раз набрать uri.

Когда происходит то-же самое в флэш, необходимо для каждой картинки и текста сделать отдельный запрос. Поскольку во флэш нельзя кликнуть правой кнопкой мыши в контекстном меню по пункту "показать картинку", отсюда и вопрос.

Что-то непонятно?

nagash
16.06.2003, 07:03
а давно у нас картинки вставляются при помощи (href=)? =) я думал там где то надо src= прописать... мдя... отстаю...

по поводу остального... м... ну надеюсь тебе всё понятно =)

uri-uri
17.06.2003, 01:24
2 nagash
Блин, конечно src=! Извиняюсь, перепутал в сообщении. Но мысль, надеюсь понятна? мдя... отстаю... :))