Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача и прием методом POST - несовместимо с session_stsrt

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: или как еще передать данные между фреймами.
Las
Отправлено: 11 Мая, 2012 - 02:22:04
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Когда я формирую форму метод POST скриптом, а потом запускаю session_stsrt, выдается и форма и нотис:
Notice: A session had already been started - ignoring session_start() in E:\wamp\www\Gallery_DB\headsets.php on line 113,
как раз в 113 строке после выдачи формы. И НИЧЕГО НЕ РАБОТАЕТ, данные формы не передаются в скрипт-обработчик. А не запускать session_stsrt я не могу, потому что просто не вижу другого способа автоматически, без действий пользователя передать данные дальше, для выдачи фоток в другом фрейме (я делаю фотогалерею на фреймах. Кто-нибудь из знатоков может подсказать выход - передать надо 2 длинные строки, длиннее, чем позволяет метод GET. Точнее, небольшую строку и большой массив.

И вдогонку вопрос: можно было бы обойти эту проблему, но в одном Фрейме данные с фоток-ссылок передаются в виде значений, а в другом - только идентификаторы переменных, без значений.
Спасибо.
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 05:30:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


translate.google.ru - хотя-бы там учись пока ошибки свои переводить и вникать.

тебе явно говорят, что заголовки уже отправлены, а поскольку сессии это механизм завязанный на куках в основном, то он тебя прямым текстом и посылает. А вообще такие проблемы, от того, что не может отделять html от php.

Вставь свою session_start() до вывода любой информации пользователю, будь то обычный хтмл или пхп. самый самый верх скрипта куда-нибудь.
 
 Top
Las
Отправлено: 11 Мая, 2012 - 17:08:07
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Нотис я перевел, заголовки отправлены. Но какие - та информация, что отправлялась через сессию - да, отправлены. А данные формы игнорируются или отправляется пустая форма, пока я ее еще не успел заполнить.
Если запучтить сессию до отправки формы, будет скорее всего то же самое. Другой вопрос, можно ли запустить сессию и остановить ее до отправки формы?

И второй вопрос - из левой колонки-фрейма по ссылке меню я перехожу в основной фрейм и формирую там набор фоток-ссылок. Так вот, при первом переходе в адресной строке передаются значения переменных. А со сформированных фоток-ссылок не передаются - в адресной строке только идентификаторы переменных. Я так думаю, это связано с повторным использованием массива GET. Можно ли егл как-нибудь очистить, чтобы передавались значения с фоток-ссылок (т.е. по второму разу). Нет никаких соображений.
Спасибо за ответ.
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 17:21:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Las, ты там чем себе голову забил, какое еще начало сессии до отправки ПОСТ??? Пост это исключительно евент в первую очередь и пока пользователь не нажмет "отправить" никакой пост не будет отправлен.

Я сегодня кому-то уже пытался объяснить. Итак постараюсь еще раз, правда я изрядно пьян ) Сори если что не так.

Сессии в первую очередь завязаны как правило на значении куки PHP_SESSIONID - или как-то так Улыбка Все куки в скрипте могут быть созданы до того момента как был отправлен первый символ, бывает даже пробел или перенос строки всё портит Улыбка
Значит! Логический вывод - сессия завязана на куках, куки не могут быть созданы после отправки первого символа, будь то путем echo 'symbol'; или print .. или вообще обычный html :

Если в коде, где-то уже выводится любой символ сессию ты не создашь! - это понятно?

Итак, ищем :
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!headers_sent($filename, $line)) {
  3.   if (!isset ($_COOKIE[ini_get('session.name')])) {
  4.     session_start();  // Стартуем сессию если заголовки не были отправлены нигде ранее и сессия не было создана!
  5.   }
  6. }
  7. else {
  8.     echo 'Error, headers aleady sent in ' . $filename . ' on line ' . $line;
  9.     exit;
  10. }
  11.  


Тут важно помнить, что любая ошибка пхп, будь то даже уровня NOTICE, сама собой вызовет неминуемую отправку заголовков и твоя сессия опять провалится Улыбка

Выхода два :
1) Гасить ошибки, что в принципе и делает как правило хостер сам дабы обеспечить большую безопасность

2) Это делать какую нибудь дополнительную проверку :
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!headers_sent($filename, $line) && error_get_last()==NULL ) {
  3.   if (!isset ($_COOKIE[ini_get('session.name')])) {
  4.     session_start();  // Стартуем сессию если заголовки не были отправлены нигде ранее и сессия не было создана!
  5.   }
  6. )
  7. else if(isset($filename) && isset($line)){
  8.    echo 'Error, headers aleady sent in ' . $filename . ' on line ' . $line;
  9.    exit;
  10. }
  11. else if(error_get_last()!=NULL){
  12.    exit;
  13. }
  14. else {
  15.    echo 'some error';
  16.    exit;
  17. }
  18.  

(Отредактировано автором: 11 Мая, 2012 - 17:31:19)

 
 Top
Las
Отправлено: 11 Мая, 2012 - 17:43:44
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




sKaa пишет:
Вставь свою session_start() до вывода любой информации пользователю, будь то обычный хтмл или пхп. самый самый верх скрипта куда-нибудь.


Я не забил голову, ты сам посоветовал.

А как сделать (вторая часть вопроса), чтобы использовать массив $_GET повторно?
Его можно как-нибудь очищать: открыть, закрыть, занести туда NULL, чтобы работала передача данных в адресной строке по второму разу - с фоток-ссылок?
Спасибо, ты мне очень морально помогаешь.

Только пойми, какая необходимость возиться с $_SESSION, если этот массив и тка работает. Именно на основе переданной через нее я формирую здоровенный массив фоток - собственно галерею. Но при этом надо еще и отправить форму, в которую пользователь занесет данные по выбранной фотке.
Не работает передача формы при включении сессии. Если я сессию не включаю, то форма передается, но в нее пользователю нечего занести - ему надо выбраь фотку и внести данные по ней.

(Отредактировано автором: 11 Мая, 2012 - 17:52:02)

 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 17:49:09
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Ну у тебя форма передает данные в скрытый iframe, так?
Так ты и указывай в этой самой форме, что именно и каким методом ПОСТ\ГЕТ она должна передать в этот iframe данные..

Там уже совсем другой массив ГЕТ и ПОСТ
Я могу ошибаться сейчас в синтаксисе хтмл, но в целом картина должна выглядеть как-то так :
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <iframe src="kakoi-to.php?a_tyt_get_massiv=2&page=5&xz_4to=2000090" ></iframe>
  3. <form action="xz 4to tam y teb9 iframe.." method="GET"
  4.  

(Добавление)
Вообще конечно я чет затупил по синей теме и фигни тебе насоветовал ака костыли, самое правильное тут будет добавить внутрь формы скрытых инпутов, их можно наштамповать внутри формы сколько душе угодно, присвоить каждому id для простоты управления значениями с помощью jQuery :

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form .. >
  3. <input type="hidden" name="qwe" value="15" />
  4.  
  5. </form>
  6.  

Именно ключ qwe со значением 15 в таком случае форма и передаст в твой фрейм!
А в самом пхп фрейма уже ловить как-то так, в зависимости от метода формы (ПОСТ/ГЕТ)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if(isset($_GET['qwe'])){
  4.    
  5. }
  6. /*
  7. if(isset($_POST['qwe'])){
  8.  
  9. }
  10. */
  11.  



А из пхп кода твоего iframe нужно обращаться к объектам родительской страницы (фрейм - дочерняя ) как-то так :
window.parent.getElementById('elem_id') ... - я не особо силен в джава скрипт когда выпью пару бокалов, сорри, по аналогии нагугли Улыбка

(Отредактировано автором: 11 Мая, 2012 - 17:59:52)

 
 Top
Las
Отправлено: 11 Мая, 2012 - 18:00:13
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Нет, не в скрытый ифрейм, а в обработчик для занесения в базу данных. У меня нет плавающих фреймов, все фреймы обычные. Может, попробовать в той же форме указать метод ГЕТ? Сама форма ведь от этого не изменится.
Да только вряд ли я чего этим достигну - запуск сессии пресекает любые другие передачи.
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 18:02:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Las, чет ты там явно косячишь, 100% тебе говорю. Щя я найду какой-нибудь пример Улыбка жди тут!)
(Добавление)
Короче вот, я нашел, все подробно и с примерами :
http://forum.php.su/topic.php?fo...=46&topic=17
 
 Top
Las
Отправлено: 11 Мая, 2012 - 18:08:52
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Косячу 100%.
Жду.
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 18:09:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


http://forum.php.su/topic.php?fo...=46&topic=17
Делай по аналогии и нужен именно iframe
 
 Top
Las
Отправлено: 11 Мая, 2012 - 18:22:55
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Спасибо, Старый Флинт, надеюсь ты меня уже почти выручил. Будем так считать.
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 18:24:15
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Ты давай там не расслабляйся! Вообще конечно я не за просто так тебе так долго всё разжевывал и буду по окончанию работ требовать законное "спасибо"
 
 Top
Las
Отправлено: 11 Мая, 2012 - 18:30:36
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Извини, рад бы, но количество сообщений не позволяет мне выполнить операцию "Спасибо"
 
 Top
sKaa
Отправлено: 11 Мая, 2012 - 18:31:03
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


Помог: 25 раз(а)

[+]


Ну ты самое главное скажи : работает?
 
 Top
Las
Отправлено: 11 Мая, 2012 - 18:34:34
Post Id



Новичок


Покинул форум
Сообщений всего: 34
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Обязательно скажу, когда все перепробую, сейчас пока занят как видишь перепиской.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB