Как сохранить и вывести массив сессии?

Суть программы заключается в том, что есть поле ввода и кнопка. В поле вводиться город и на кнопку он выводиться. У следующего вводимого значения должна совпадать первая буква с предыдущей последней (т. е. игра в города). Проблема заключается в том, что нужно выводить все введенные значения и при отправке они должны сохраняться на своем месте.

PHP:
  1. <?php session_start(); ?>
  2. <!DOCTYPE html>
  3. <html lang=»en»>
  4. <head>
  5.   <meta charset=»UTF-8″>
  6.   <meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
  7.   <title>lab5</title>
  8. </head>
  9. <body>
  10. <form method=»POST» >
  11. <input name=»gorod» type=»textbox»>
  12.  
  13. <input name=»submit» type=»submit»>
  14. <input value=»chistka» type=»submit» type=»button» name=»chistka»>
  15. </form>
  16.   <?php
  17.  
  18. if( isset($_POST[«submit»]) ) {
  19. //print_r($_SESSION[‘city’]) ;
  20.  
  21.   //$_SESSION[‘city’][1] = $_POST[«gorod»];
  22.  
  23.   if(isset($_SESSION[‘city’])) {
  24.     $last = substr($_SESSION[‘city’],-1);
  25.     $first = str_split($_POST[«gorod»]);
  26.     if($last == $first[0]) {
  27.       echo $_POST[«gorod»].» Верно»;
  28.       $_SESSION[‘city’] = $_POST[«gorod»];
  29.      
  30.     } else {
  31.       echo «error»;
  32.     }
  33.   }else{
  34.     $_SESSION[‘city’] = $_POST[«gorod»];
  35.     echo $_SESSION[‘city’]. » «. «первый раз»;
  36.   }
  37.  
  38. }
  39. if(isset($_POST[«chistka»])) {
  40. }
  41.   ?>
  42. </body>
  43. </html>

— Добавлено —
Пытался при каждом клике пушить в массив, но он все равно обновляет

Код (Text):
  1. <?php session_start(); ?>
  2. <!DOCTYPE html>
  3. <html lang=»en»>
  4. <head>
  5.   <meta charset=»UTF-8″>
  6.   <meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
  7.   <title>lab5</title>
  8. </head>
  9. <body>
  10. <form method=»POST» >
  11. <input name=»gorod» type=»textbox»>
  12.  
  13. <input name=»submit» type=»submit»>
  14. <input value=»chistka» type=»submit» type=»button» name=»chistka»>
  15. </form>
  16.   <?php
  17.  
  18. if( isset($_POST[«submit»]) ) {
  19. //print_r($_SESSION[‘city’]) ;
  20. $arr = [];
  21. array_push($arr, $_POST[«gorod»] );
  22. print_r($arr);
  23.   //$_SESSION[‘city’][1] = $_POST[«gorod»];
  24.  
  25.   if(isset($_SESSION[‘city’])) {
  26.    
  27.     $last = substr($_SESSION[‘city’],-1);
  28.     $first = str_split($_POST[«gorod»]);
  29.    
  30.     if($last == $first[0]) {
  31.    
  32.       echo $_POST[«gorod»].» Верно»;
  33.       $_SESSION[‘city’] = $_POST[«gorod»];
  34.  
  35.      
  36.     } else {
  37.       echo «error»;
  38.     }
  39.   }else{
  40.     $_SESSION[‘city’] = $_POST[«gorod»];
  41.     echo $_SESSION[‘city’]. » «. «первый раз»;
  42.   }
  43.  
  44. }
  45. if(isset($_POST[«chistka»])) {
  46.   session_destroy();
  47. }
  48.   ?>
  49. </body>
  50. </html>
 

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

PHP:
  1.  $_SESSION[‘city’][] = $_POST[«gorod»];

ну и выводить историю соответственно потом из этого массива

 

Добрый день!
Обратите внимание на то, какие атрибуты допускаются в тэге input
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
В Ваше случае, атрибут type=»textbox» указан неверно, д.в «text»
В input атрибут type д.б. задан один раз,а у Вас type=»submit» type=»button»
Браузер акцептирует последний. Если нужен «button», то «submit» лучше убрать.
По поводу реализации. Это типичная задачка для JS. Загружать сервер в без надобности.
Если бы у Вас был селектор городов и их названия выбирались из БД, то тогда без этого не обойтись
Удачи!

 

Города я записываю в файл gorod.txt
Не получилось записать массив городов в куки,даже чат GPT Сбербанка не знает
Автор просил сохранять города — я сохранил
При воде второго города всегда выдает ERROR
Исправляйте
Я не профессионал,я самоучка
Посмотреть на работу этого кода:https://кибершахматы.рф/petuh/gorod.php

PHP:
  1. <?php session_start(); ?>
  2. <!DOCTYPE html>
  3. <html lang=»en»>
  4. <head>
  5.   <meta charset=»UTF-8″>
  6.   <meta name=»viewport» content=»width=device-width, initial-scale=1.0″>
  7.   <title>lab5</title>
  8. </head>
  9. <body>
  10. <center>
  11. <form method=»POST» >
  12. <input name=»gorod» type=»textbox»>
  13. <input name=»submit» type=»submit»>
  14. <input value=»chistka» type=»submit» type=»button» name=»chistka»>
  15. </form>
  16.   <?php
  17. if( isset($_POST[«submit»]) ) {
  18.  
  19. $base=‘gorod.txt’;
  20. if ( !file_exists($base) )   {
  21. $openchatdb=fopen($base,«w»);
  22. if(fwrite($openchatdb,«»)) { ;  }
  23. fclose($openchatdb);
  24.    }
  25.  
  26. $openchatdb=fopen($base,«a»);
  27. if(fwrite($openchatdb,$gorod.«\n«)) { ;  }
  28. fclose($openchatdb);
  29.  
  30.   if(isset($_SESSION[‘city’])) {
  31.     $last = substr($_SESSION[‘city’],-1);
  32.     $first = str_split($_POST[«gorod»]);
  33.     if($last == $first[0]) {
  34.       echo $_POST[«gorod»].» Верно»;
  35.       $_SESSION[‘city’] = $_POST[«gorod»];
  36.    
  37.     } else {
  38.       echo «error»;
  39.     }
  40.   }else{
  41.     $_SESSION[‘city’] = $_POST[«gorod»];
  42.     echo $_SESSION[‘city’]. » «. «первый раз»;
  43.   }
  44. }
  45. if(isset($_POST[«chistka»])) {
  46. }
  47.  
  48. $base=‘gorod.txt’;
  49. if($file = fopen($base, «r»)) { $b4=0;}
  50. while(!feof($file)) {
  51. if($gorod[]= fgets ($file)){ $b4=$b4+1; }
  52. }
  53. fclose ($file);
  54.  
  55. for($g=0;$g<$b4;$g++) {
  56. $gorod[$g] = preg_replace(«|[\r\n]+|», «», $gorod[$g]);
  57. $g1=$g+‘1’;              
  58. echo ‘<br>’.$g1.‘.’.$gorod[$g];
  59.                                     }
  60. echo ‘<br><br>Считалось городов ‘.$b4;
  61.  
  62. ?>
  63. </center>
  64. </body>
  65. </html>
 

Напиши maxlength=20, чтобы вместо города предложение не ввели
<input name=»gorod» maxlength=20 type=»textbox»>

И добавь $gorod=htmlspecialchars($gorod);
Чтобы тебе сайт не стерли через код PHP

 

Нет такого типа type=»textbox»
Петропавловск-Камчатский maxlength 24
Как это «сайт не стерли через код PHP»?

 

 

Добрый день!
Игра в города без PHP и $_SESSION. Только HTML5 и Native Java Script

HTML:
  1. <!DOCTYPE html>
  2. <html lang=«ru»>
  3.   <meta charset=«UTF-8»>
  4.   <meta name=«viewport» content=«width=device-width, initial-scale=1.0»>
  5.   <title>lab5</title>
  6.   <style>
  7.   body, input{
  8.     font-family: arial;
  9.     font-size: 16px
  10.   }
  11.  
  12.   input[name=»city»]{width: 250px}
  13.  
  14.   input + input{
  15.     margin-left: 10px
  16.   }
  17.  
  18.   #сities{
  19.    vertical-align: top;
  20.    margin-left: 30px;
  21.    text-align: left;
  22.    padding: 10px;
  23.    height: 300px;
  24.    width: 200px;
  25.    overflow-y: auto;
  26.    border: 1px solid #ccc;
  27.    background-color:#F2F2F2;
  28.    border-radius: 5px;
  29.    display: inline-block
  30.   }
  31.  
  32.   #сities div{
  33.     margin-top: 3px
  34.   }
  35.  
  36.   body > div{margin-top: 40px}
  37.   </style>
  38. </head>
  39. <div align=«center»>
  40. <form method=«POST» >
  41. <input name=«city» type=«text» pattern=«^[А-Яа-яЁё\s\-]+$» required>
  42.   <input name=«submit» type=«submit» value=«Отправить»  >
  43.   <input  type=«reset» value=«Сброс»> <div id=«сities»></div>
  44. </form>
  45. </div>
  46. </body>
  47. CitiesNames = [];
  48. elCities = document.getElementById(«сities»);
  49. f = document.forms[0];
  50. f.addEventListener(«submit», (event) => {
  51.   event.preventDefault();
  52.   elCity = document.forms[0].city;
  53.   city = elCity.value;
  54.   cityUC = city.toUpperCase();
  55.   if(CitiesNames.includes(cityUC))
  56.   {
  57.     alert(`Ошибка! Вы поторно ввели город ${city}!` );
  58.     return;
  59.   }
  60.   else
  61.   {
  62.     CitiesNames.push(cityUC);
  63.     firstLetter = cityUC.slice(-1);
  64.     pattern = new RegExp(‘^[ЪЙЫЬ]’);
  65.     elCity.value = pattern.test(firstLetter)?cityUC.substr(-2,1):firstLetter;
  66.     el = document.createElement(«div»);
  67.     el.innerHTML = city;
  68.     elCities.appendChild(el);
  69.     elCities.scrollTo(0, info.scrollHeight);
  70.   }
  71. });
  72.  
  73. f.addEventListener(«reset», () => {
  74.   elCities.innerHTML = «»;
  75.   CitiesNames = [];
  76. });
  77. </html>

Удачи!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *