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 :: Помогите разобраться с $_SESSION

 PHP.SU

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


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

> Описание: session_start();
feniksdv
Отправлено: 12 Октября, 2015 - 16:48:51
Post Id



Новичок


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


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




Я все продолжаю изучать пхп Радость
Решил создать тест и у меня уже проблема на выводе форм, первая и вторая форма выводится (но ответ сохраняет только одна переменная), а третье не хочет выводится т.к. условие проверки не позволяет.
Так вот вопрос: почему только одна переменная хранит данные, а остальные затираются?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $_SESSION['vopros1'] = $_GET["vopros1"];
  5. $_SESSION['vopros2'] = $_GET["vopros2"];
  6. $_SESSION['vopros3'] = $_GET["vopros3"];
  7.  
  8.         if (!isset ($_SESSION['vopros1']))
  9.         {
  10.                 echo <<<END
  11. <form method="GET">
  12.         <h2>Вопрос номер 1</h2>
  13.         <label>
  14.                 <input type="radio" name="vopros1" value="Вариант ответа №2">
  15.                         Вариант ответа №2
  16.         </label><br>
  17.         <label>
  18.        
  19.         <p><input name="submit" type='submit' value='Отправить'></p>
  20.  
  21.  </form>
  22. END;
  23.         }
  24.         elseif (isset ($_SESSION['vopros1']))
  25.         {
  26.         echo <<<END
  27. <form method="GET">
  28.         <h2>Вопрос номер 2</h2>
  29.         <label>
  30.                 <input type="radio" name="vopros2" value="Вариант ответа №2">
  31.                         Вариант ответа №2
  32.         </label><br>
  33.         <label>
  34.        
  35.         <p><input name="submit" type='submit' value='Отправить'></p>
  36.  
  37.  </form>
  38. END;
  39.         }              
  40.         elseif (!isset ($_SESSION['vopros2']))
  41.         {
  42.         echo <<<END
  43. <form method="GET">
  44.         <h2>Вопрос номер 2</h2>
  45.         <label>
  46.                 <input type="radio" name="vopros2" value="Вариант ответа №2">
  47.                         Вариант ответа №2
  48.         </label><br>
  49.         <label>
  50.        
  51.         <p><input name="submit" type='submit' value='Отправить'></p>
  52.  
  53.  </form>
  54. END;
  55.         }
  56.         elseif (isset ($_SESSION['vopros2']))
  57.         {
  58.         echo <<<END
  59. <form method="GET">
  60.         <h2>Вопрос номер 3</h2>
  61.         <label>
  62.                 <input type="radio" name="vopros3" value="Вариант ответа №2">
  63.                         Вариант ответа №2
  64.         </label><br>
  65.         <label>
  66.        
  67.         <p><input name="submit" type='submit' value='Отправить'></p>
  68.  
  69.  </form>
  70. END;
  71.         }                      
  72.         elseif (!isset ($_SESSION['vopros3']))
  73.         {
  74.         echo    <<<ENDD
  75. <form method="GET">
  76.         <h2>Вопрос номер 3</h2>
  77.         <label>
  78.                 <input type="radio" name="vopros3" value="Вариант ответа №2">
  79.                         Вариант ответа №2
  80.         </label><br>
  81.         <label>
  82.        
  83.         <p><input name="submit" type='submit' value='Отправить'></p>
  84.  
  85.  </form>
  86. ENDD;
  87. echo 'ok';
  88.         }
  89. ?>
  90.  
 
 Top
Panoptik
Отправлено: 12 Октября, 2015 - 17:10:02
Post Id



Постоянный участник


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


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






-----
Just do it
 
 Top
feniksdv
Отправлено: 12 Октября, 2015 - 18:07:21
Post Id



Новичок


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


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




Panoptik пишет:

По гуглил и не понял как его можно применить. Можете чуть-чуть подробней?
 
 Top
andrewkard
Отправлено: 12 Октября, 2015 - 18:38:06
Post Id


Участник


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


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




feniksdv
Вы с name ничего не напутали? Не уверен, что нужен, но нет блока:
elseif (isset ($_SESSION['vopros3']))
 
 Top
feniksdv
Отправлено: 12 Октября, 2015 - 19:32:00
Post Id



Новичок


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


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




andrewkard пишет:
feniksdv
Вы с name ничего не напутали? Не уверен, что нужен, но нет блока:
elseif (isset ($_SESSION['vopros3']))


Нет это не нужно - проверка это:
<Логика>
PHP:
скопировать код в буфер обмена
  1.  
  2. (если) !isset (не определена переменная ) ( для вопроса 1)
  3.            то вывод "вопрос 1"
  4. (если) isset (определена переменная) (для вопрос 1)
  5.            то вывод "вопрос 2"
  6. (если) !isset (не определена переменная) ( для вопрос 2)
  7.            то вывод "вопрос 2"
  8. (если) isset (определена переменная) ( для вопрос 2)
  9.            то вывод "вопрос 3"
  10.  


А тут получается нужно понять, почему он не сохраняет переменные, если создать другой файлик:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo 'вопрос 1', $_SESSION['vopros1'], '<br>вопрос 2', $_SESSION['vopros2'], '<br>вопрос 3', $_SESSION['vopros3'];     
  4. ?>
  5.  

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

(Отредактировано автором: 12 Октября, 2015 - 19:43:37)

 
 Top
andrewkard
Отправлено: 13 Октября, 2015 - 11:43:32
Post Id


Участник


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


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




Переменные затирались, потому что Вы их сами перезаписывали:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['vopros1'] = $_GET["vopros1"];
  3. $_SESSION['vopros2'] = $_GET["vopros2"];
  4. $_SESSION['vopros3'] = $_GET["vopros3"];
  5.  

Попробуйте так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr_settings = array(
  3.     1 => 'Вариант ответа №1',
  4.     2 => 'Вариант ответа №2',
  5.     3 => 'Вариант ответа №3',
  6. );
  7.  
  8. if (isset($_GET["vopros1"])) $_SESSION['vopros1'] = $_GET["vopros1"];
  9. if (isset($_GET["vopros2"])) $_SESSION['vopros2'] = $_GET["vopros2"];
  10. if (isset($_GET["vopros3"])) $_SESSION['vopros3'] = $_GET["vopros3"];
  11. $_SESSION['order'] = isset($_GET['order'])? $_SESSION['order'] += 1:1;
  12. if (empty($arr_settings[$_SESSION['order']])){
  13.     exit('Тест окончен!');
  14. }
  15. ?>
  16. <form method="GET">
  17.     <h2>Вопрос номер <?=$_SESSION['order']?></h2>
  18.     <label><input type="radio" name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[$_SESSION['order']]?>"><?=$arr_settings[$_SESSION['order']]?></label><br>
  19.     <input type="hidden" name="order" value="<?=$_SESSION['order']?>">
  20.     <p><input name="submit" type='submit' value='Отправить'></p>
  21. </form>
  22.  
  23. <?PHP
  24. var_dump($_SESSION);
  25. ?>
  26.  
 
 Top
feniksdv
Отправлено: 14 Октября, 2015 - 18:55:48
Post Id



Новичок


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


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




andrewkard пишет:
Переменные затирались, потому что Вы их сами перезаписывали:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_SESSION['vopros1'] = $_GET["vopros1"];
  3. $_SESSION['vopros2'] = $_GET["vopros2"];
  4. $_SESSION['vopros3'] = $_GET["vopros3"];
  5.  

Попробуйте так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $arr_settings = array(
  3.     1 => 'Вариант ответа №1',
  4.     2 => 'Вариант ответа №2',
  5.     3 => 'Вариант ответа №3',
  6. );
  7.  
  8. if (isset($_GET["vopros1"])) $_SESSION['vopros1'] = $_GET["vopros1"];
  9. if (isset($_GET["vopros2"])) $_SESSION['vopros2'] = $_GET["vopros2"];
  10. if (isset($_GET["vopros3"])) $_SESSION['vopros3'] = $_GET["vopros3"];
  11. $_SESSION['order'] = isset($_GET['order'])? $_SESSION['order'] += 1:1;
  12. if (empty($arr_settings[$_SESSION['order']])){
  13.     exit('Тест окончен!');
  14. }
  15. ?>
  16. <form method="GET">
  17.     <h2>Вопрос номер <?=$_SESSION['order']?></h2>
  18.     <label><input type="radio" name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[$_SESSION['order']]?>"><?=$arr_settings[$_SESSION['order']]?></label><br>
  19.     <input type="hidden" name="order" value="<?=$_SESSION['order']?>">
  20.     <p><input name="submit" type='submit' value='Отправить'></p>
  21. </form>
  22.  
  23. <?PHP
  24. var_dump($_SESSION);
  25. ?>
  26.  


Спасибо помогло.
 
 Top
feniksdv
Отправлено: 17 Октября, 2015 - 11:51:12
Post Id



Новичок


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


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




Да бы не плодить темы, напишу тут.

Решил я прикрутить AJAX для формы, т.к. сейчас перезагружается полностью сайт, что по мне так очень не удобно.

Делаю так:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form  method="POST" action="" id="test_form" >
  3.     <h2>Вопрос номер <?=$_SESSION['order']?></h2>
  4.     <h3><?=$vop?></h3>
  5.     <label><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[0][$_SESSION['order']]?>"><?=$arr_settings[0][$_SESSION['order']]?></label><br>
  6.     <label><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[1][$_SESSION['order']]?>"><?=$arr_settings[1][$_SESSION['order']]?></label><br>
  7.     <label><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[2][$_SESSION['order']]?>"><?=$arr_settings[2][$_SESSION['order']]?></label><br>
  8.     <label><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[3][$_SESSION['order']]?>"><?=$arr_settings[3][$_SESSION['order']]?></label><br>
  9.     <input type="hidden" name="order" value="<?=$_SESSION['order']?>">
  10.    <p><input name="submit" type='submit' value='Отправить'></p>
  11. </form>
  12.  
  13. <script>  
  14. $(function(){
  15. $('#test_form').submit(function(eventObject){
  16. //отменяем стандартное действие при отправке формы
  17. eventObject.preventDefault();
  18. //берем из формы метод передачи данных
  19. var m_method=$(this).attr('method');
  20. //получаем адрес скрипта на сервере, куда нужно отправить форму
  21. var m_action=$(this).attr('action');
  22. //получаем данные, введенные пользователем в формате input1=value1&input2=value2...,
  23. //то есть в стандартном формате передачи данных формы
  24. var m_data=$(this).serialize();
  25. $.ajax({
  26. type: m_method,
  27. url: m_action,
  28. data: m_data,
  29. success: function(result){
  30. $('#test_form').html(result);
  31. }
  32. });
  33. });
  34. });
  35.     </script>
  36.  


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

(Отредактировано автором: 17 Октября, 2015 - 12:01:17)

 
 Top
Tyoma5891
Отправлено: 17 Октября, 2015 - 12:20:48
Post Id


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


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


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




feniksdvэто все бред)
все что Вам нужно в этой строчке:
CODE (javascript):
скопировать код в буфер обмена
  1. $.post('test.php',$('#test_form').serialize(),function(data){
  2.                         $('#save_result').html(data);
  3.                         });

читать тут:
http://jquery-docs[dot]ru/Ajax/jQuery[dot]post/

(Отредактировано автором: 17 Октября, 2015 - 12:30:50)

 
 Top
feniksdv
Отправлено: 19 Октября, 2015 - 10:26:21
Post Id



Новичок


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


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




Tyoma5891 пишет:
feniksdvэто все бред)
все что Вам нужно в этой строчке:
CODE (javascript):
скопировать код в буфер обмена
  1. $.post('test.php',$('#test_form').serialize(),function(data){
  2.                         $('#save_result').html(data);
  3.                         });

читать тут:
http://jquery-docs[dot]ru/Ajax/jQuery[dot]post/


Не получается делаю так:
xxx.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $arr_settings = array(
  4.                                                 array(
  5.                                                                 1 => '1',
  6.                                                                 2 => '2',
  7.                                                                 3 => '3',
  8.                                                                 4 => '4',      
  9.                                                                 5 => '5',
  10.                                                                 6 => '6',
  11.                                                                 7 => '7'
  12.                                                                 )
  13.                                                
  14.                                         );
  15.                                
  16.  
  17.  
  18. if (isset($_POST["vopros1"])) {
  19.         $_SESSION['vopros1'] = $_POST["vopros1"];
  20. }
  21. if (isset($_POST["vopros2"])) {
  22.         $_SESSION['vopros2'] = $_POST["vopros2"];
  23. }
  24. if (isset($_POST["vopros3"])) {
  25.         $_SESSION['vopros3'] = $_POST["vopros3"];
  26. }
  27. if (isset($_POST["vopros4"])) {
  28.         $_SESSION['vopros4'] = $_POST["vopros4"];
  29. }
  30. if (isset($_POST["vopros5"])) {
  31.         $_SESSION['vopros5'] = $_POST["vopros5"];
  32. }
  33. if (isset($_POST["vopros6"])) {
  34.         $_SESSION['vopros6'] = $_POST["vopros6"];
  35. }
  36. if (isset($_POST["vopros7"])) {
  37.         $_SESSION['vopros7'] = $_POST["vopros7"];
  38. }
  39.  
  40. $_SESSION['order'] = isset($_POST['order'])? $_SESSION['order'] += 1:1;
  41.  
  42. if ($_SESSION['order'] == 1)
  43.  $vop='11';
  44. if ($_SESSION['order'] == 2)
  45.  $vop='22';
  46. if ($_SESSION['order'] == 3)
  47.  $vop='33';
  48. if ($_SESSION['order'] == 4)
  49.  $vop='44';
  50. if ($_SESSION['order'] == 5)
  51.  $vop='55';
  52. if ($_SESSION['order'] == 6)
  53.  $vop='66';
  54. if ($_SESSION['order'] == 7)
  55.  $vop='77';
  56.  
  57.  ##############---------IMG
  58. if ($_SESSION['order'] == 1)
  59.  $vop_img='<img src="/wp-content/uploads/test/vop1.jpg" width="100%"/>';
  60. if ($_SESSION['order'] == 2)
  61.  $vop_img='<img src="/wp-content/uploads/test/vop2.jpg" width="100%"/>';
  62. if ($_SESSION['order'] == 3)
  63.  $vop_img='<img src="/wp-content/uploads/test/vop3.jpg" width="100%"/>';
  64. if ($_SESSION['order'] == 4)
  65.  $vop_img='<img src="/wp-content/uploads/test/vop4.jpg" width="100%"/>';
  66. if ($_SESSION['order'] == 5)
  67.  $vop_img='<img src="/wp-content/uploads/test/vop5.jpg" width="100%"/>';
  68. if ($_SESSION['order'] == 6)
  69.  $vop_img='<img src="/wp-content/uploads/test/vop6.jpg" width="100%"/>';
  70. if ($_SESSION['order'] == 7)
  71.  $vop_img='<img src="/wp-content/uploads/test/vop7.jpg" width="100%"/>';
  72.  ##############---------IMG end
  73.  
  74.  ##############---------text for test
  75. if ($_SESSION['order'] == 1)
  76.  $vop_text_for_test='<p>Ля-ля</p>';
  77.  ##############---------text for test end
  78.  
  79. if ($_SESSION['voprosХ'] == $arr_settings[0]['Х']){$a[х]=1;}
  80. if ($_SESSION['voprosХ'] == $arr_settings[1]['Х']){$a[х]=2;}
  81. if ($_SESSION['voprosХ'] == $arr_settings[2]['Х']){$a[х]=3;}
  82.  
  83. $a[$b]=1;
  84. $sum = 0;
  85. foreach ($a as $key => $value){
  86.         $sum = $sum + $value;
  87. }
  88.  
  89. if (empty($arr_settings[0][$_SESSION['order']])){
  90. echo '<form method="post" >';
  91. echo '<input name="submit" type="submit" value="Пройти снова" style="margin: 20px auto 0px; background: #747FC2; border: 0; color: #fff; padding: 10px 40px; font-size: 16px; font-family: "Roboto Bold Condensed"; text-transform: uppercase;"/>';
  92. echo '</form>';
  93.  
  94. if($rez_test <= 7){ echo "Ответ1"; }
  95. if($rez_test >= 8 && $rez_test <= 14){ echo "Ответ2"; }
  96. if($rez_test >= 15 && $rez_test <= 21){ echo "Ответ3"; }
  97. if($rez_test >= 22 && $rez_test <= 35){ echo "Ответ4"; }
  98. echo '<br>';
  99. exit('');      
  100. }
  101.  
  102. ?>
  103. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  104. <html>
  105. <head>
  106.  
  107. <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
  108. <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  109.  
  110. </head>
  111. <body>
  112. <?=$vop_text_for_test?>
  113.  
  114. <div id="save_result">
  115. <form  method="POST" id="test_form">
  116.     <h2>Вопрос номер <?=$_SESSION['order']?></h2>
  117.     <p><?=$vop_img?></p>
  118.     <h3><?=$vop?></h3>
  119.     <label style="font-size: 20px;"><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[0][$_SESSION['order']]?>"><?=$arr_settings[0][$_SESSION['order']]?></label><br>
  120.     <label style="font-size: 20px;"><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[1][$_SESSION['order']]?>"><?=$arr_settings[1][$_SESSION['order']]?></label><br>
  121.     <label style="font-size: 20px;"><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[2][$_SESSION['order']]?>"><?=$arr_settings[2][$_SESSION['order']]?></label><br>
  122.     <label style="font-size: 20px;"><input type="radio" required name="vopros<?=$_SESSION['order']?>" value="<?=$arr_settings[3][$_SESSION['order']]?>"><?=$arr_settings[3][$_SESSION['order']]?></label><br>
  123.     <input type="hidden" name="order" value="<?=$_SESSION['order']?>">
  124.    <p><input style="margin: 20px auto 0px; background: #747FC2; border: 0; color: #fff; padding: 10px 40px; font-size: 16px; font-family: 'Roboto Bold Condensed'; text-transform: uppercase;" name="submit" type='submit' value='Отправить'></p>
  125. </form>
  126. </div>
  127.  
  128. <script>
  129.     $.post('xxx.php',$('#test_form').serialize(),function(data){
  130.                             $('#save_result').html(data);
  131.                             });
  132. </script>
  133.  

(Отредактировано автором: 19 Октября, 2015 - 13:40:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB