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 :: Потеря переменных при отправки формы

 PHP.SU

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


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

> Без описания
KiTaeZa
Отправлено: 24 Декабря, 2008 - 16:31:40
Post Id


Новичок


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


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




может кто сталкивался с таким...

есть 2 странички одна на родительском домене http://rosstar[dot]ru/ , вторая в сабдоме https://shop.rosstar.ru/.

при первом переходе происходит обращение к сессии и все срабатывает, но теряется первый парамерт name=maxx, но он ради этого сейчас и вставлен. при втором переходе теряются оба параметра... и соответственно ничего не происходит.

подскажите пожалуйста откуда у данной проблемы могут рости ноги...

вот код первой.
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. echo"привет нажми на кнопку )";
  4. $_SESSION['proverka_log'] = 'зайчики))';
  5.  
  6. $id_ses = session_id();
  7. ?>
  8. <form name="test" action="https://shop.rosstar.ru/otvet_ses_test.php?name=maxx&PHPSESID=<?PHP echo $id_ses ?>" >
  9. <input type="submit" value="Полетели">
  10. </form>
  11.  


вот код второй
PHP:
скопировать код в буфер обмена
  1.  
  2. $baxozavr = $_SESSION['proverka_log'];
  3. echo "работает<br />";
  4. echo "$baxozavr";
  5.  
 
 Top
Гость
Отправлено: 24 Декабря, 2008 - 16:42:00
Post Id


УДАЛЁН










Чудеса прямо Улыбка
Может я не совсем прав, но может стоить передавать парамерты не в самом action, а использовать hidden-поля?
 
 Top
KiTaeZa
Отправлено: 24 Декабря, 2008 - 17:06:50
Post Id


Новичок


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


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




да уж чудеса...
дорисовал чтобы форма передовалась с помощью get, и action без параметров, запихнул phpsesid в хиден поле, да я перешел по запросу, phpsesid осталась в строке запроса, то что была нажата кнопка в строке запроса не отобразилось )), сессия не увидела в урл номер сессии и создала новую (


вопрос остается открытым...

(Отредактировано автором: 24 Декабря, 2008 - 20:48:58)

 
 Top
Lostoffuture
Отправлено: 25 Декабря, 2008 - 10:52:36
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2008  
Откуда: обнинск


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

[+]


хм зачем hiden поля не понимаю... ент называется палево. во вторых когда передаете через GET все параметры у вас и будут в адресной строке... можете сделать так,

CODE (text):
скопировать код в буфер обмена
  1.  
  2. на первой странице
  3. session_start();
  4. echo'
  5. <form name="test" action="https://shop.rosstar.ru/otvet_ses_test.php?name=maxx&PHPSESID='.md5($id_ses).' >';
  6. $session['test']=$id_ses;
  7. echo'
  8. <input type="submit" value="Полетели">
  9. </form>
  10. ';
  11. на второй странице
  12. session_start();
  13. id_ses=$_GET['PHPSESID'];//зашифрованное ID sess
  14. echo(id_ses);//просмотр значения
  15. echo "работает<br />";
  16. isset($session['test']){
  17.  
  18. echo "$session['test']";
  19. }else echo "ID sess  потерен";
  20.  
  21.  
  22.  


можете так попробовать, в этом случае вы получаете защифрованные данные в URlе и все переменные хранятся в сессии)))


-----
Не пользуйтесь денверами, делайте сами связки)))))
 
 Top
KiTaeZa
Отправлено: 25 Декабря, 2008 - 11:47:53
Post Id


Новичок


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


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




ам проблема в том что данные передаются не между одним и тем же доменом , а между разными, но на одном сервере. в вашем варианте на второй странице начнется просто новая сессия в которой не будет старых переменных. И я чесно говоря не совсем понимаю по вашему коду рациональность применения шифровки ид сессии. Если только не сравнивать с тем что в сесси ради того чтобы удостовериться что это тот человек.
но проблема пока не в этом.
(Добавление)
попробую обрисовать ситуацию на данным момент ....
по прежнему есть две страницы http://rosstar[dot]ru/session_test.php с кодом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo"привет нажми на кнопку )";
  4. $_SESSION['proverka_log'] = 'зайчики))';
  5. $name = session_name();
  6. $id_ses = session_id();
  7. ?>
  8. <form method="get" name="test" action="https://shop.rosstar.ru/otvet_ses_test.php" >
  9.  
  10. <input type="submit" value="Полетели">
  11. </form>
  12.  


вторая страница https://shop[dot]rosstar[dot]ru/otvet_ses_test.php с кодом:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $baxozavr = $_SESSION['proverka_log'];
  4. echo "работает<br />";
  5. echo "$baxozavr";
  6. ?>
  7.  

все дополнительные поля и параметры я убрал.
при переходе с первой страничке на вторую (в первый раз когда сессия только началась) все срабатывает и я получаю переменную из сессии. В адресной строке при этом наблюдается такая строка https://shop[dot]rosstar[dot]ru/otvet_ses_test.php
тоесть при этом переходе мне автоматом приплюсовыет идентификатор сессии о.О и сессия стартует. При последующих заходах (посути с тойже сессией) мне автоматом ничего не плюсует и сессия не запускается. Перезапуск браузера(старт новой сессии) при водит к тому что данные снова выводятся 1 раз и ситуация повторяется.
При повторном вызове скрипта он стартует новую сессию и дальше продолжает с ней рабоать.

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

Сейчас мне очень интересно понять почему автоматом мне добавляется PHPSESSID в url при первом запуске и не пишется в последствии, так же хочется понять почему при повторном заходе может начинаться новая сессия, если предыдущая еще не закончилась(ни по времени, ни по закрытию браузера ни по коду), да и вообще что это может быть за бред)

(Отредактировано автором: 25 Декабря, 2008 - 12:18:48)

 
 Top
Botik
Отправлено: 25 Декабря, 2008 - 19:34:36
Post Id



Новичок


Покинул форум
Сообщений всего: 30
Дата рег-ции: Дек. 2008  
Откуда: Чебоксары


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




Добавляется видимо по тому, что у Вас отключены coockie, а не приписывается потому, что оно отключено в настройках PHP.
При повторном заходе новая сессия начинается, если пользователь не передал, или передал не верные данные о сессии

(Отредактировано автором: 25 Декабря, 2008 - 19:35:59)

 
 Top
NOBEL
Отправлено: 27 Декабря, 2008 - 15:31:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 146
Дата рег-ции: Май 2008  
Откуда: Сутки до японии, неделя до Москвы


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




Ребята, может я и ошибаюсь, но сессии при работе абсолютно пофигу, включены ли куки.
Механизм сессий проверит их при первом запуске сессии на каждом серваке....
________________________________ __
Все вышеперечисленные механизмы позволяют только назначить имя сессии, без передачи переменных из неё, незнаю, какой в этом толк и для чего это может пригодиться.....
________________________________ ___
Если вам именно это и надо, причем только это, то это вы делаете принципиально неправильно. Данный механизм сработать может только при некоторых условиях... но я бы порекомендовал функцию session_id() для уверенного присвоения id сессии.
И и не надо перавая GET параметр, давать ему имя PHPSESID, это имя уже использует сам php, получается каша..... работать мож и будет, но лучше не надо...
(Добавление)
Кстати, session_id() следует использовать до старта сессии


-----
купил камаз и не жалею,...
никого не жалею!!!
 
 Top
KiTaeZa
Отправлено: 29 Декабря, 2008 - 08:43:27
Post Id


Новичок


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


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




мня... короче говоря все закончилось на шаманизме.

to botik сессии ради этого перехода не отключаю ;) они у меня включены.
Почему при первом переходе в поддомен PHP сам приписал phpsesid и удачно стартовал нужную сессию, осталось загадкой. Но при дальнейших перемещениях по поддомену он сразу же начинал новую сессию и ходил я дальше уже в ней, соответственно никаких переменных в ней небыло.

to nobel сессиям не пофигу включены ли куки, это все будет зависить от настроек серва, если там прописано в начале пробывать писать в куки, а затем если нефига не получилось добавлять в url , то в принцыпе да можно о куках не задумываться.

насчет вышеперечисленных механизмов, вы не совсем правы, действия происходят на одном сервере и сессии храняться в одном и том же месте. по этому и важно было начать сессию на поддомене с тем же самым ид, чтобы получить доступ к переменным (и это получалось, но не совсем так как хотелось бы).

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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB