За последние 24 часа нас посетили 20042 программиста и 1081 робот. Сейчас ищут 709 программистов ...

Свой простой сервер

Тема в разделе "PHP для новичков", создана пользователем jzetjo, 28 авг 2016.

  1. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
    Здравствуйте. Имеется такая задача:
    Напишите простой сервер, который может получать строку из поля input (по GET и POST). В ответ он должен выводить на экран информацию о том, содержит ли строка хоть одну цифру или нет. Сервер так же должен вести статистику, сколько строк содержало цифры и сколько не содержало, и показывать эту информацию на экране после каждого запроса. Статистика должна храниться до того, как пользователь закроет браузер/уйдёт на другую страницу.

    Не могу понять, как сделать статистику на сервере и откуда вообще начинать плясать. Нужно ли использовать сессии? И как это все организовать. Код сделанного прилагается
    PHP:
    1. <form action="" method="POST">
    2.         Строка: <input type="text" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>">
    3.         <input type="submit" value="Отправить">
    4.     </form>
    5.     <?php
    6.         if (preg_match("/[0123456789]/", $_POST['name'])) {
    7.             echo "В тексте есть цифры";
    8.         } else {
    9.             echo "В тексте нет ни одной цифры";
    10.         }
    11.     ?>
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Подходит

    https://secure.php.net/manual/ru/book.session.php и https://secure.php.net/manual/ru/language.types.array.php
     
  3. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    @jzetjo сессия это индивидуальный массив для пользователя, ты в него просто пиши статистику и показывай её, в массив можешь записать статистику?
     
  5. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
    С трудом понимаю как это можно реализовать в коде. И примеров никаких не могу найти. Я создаю сессию. По форме ввожу данные. Если
    PHP:
    1. print_r($_SESSION)
    то выводится последнее введенное значение на сайте. Никакой статистики не получается
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    @jzetjo, русским языком напишите, как по вашему должно работать. Что значит, к примеру, статистика?
     
  7. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
    С приведенного мной кода результат следующий(скриншот прилагается). Как по-моему должно работать: Под надписью "В тексте есть цифры" должно находится еще 2 надписи с примерным содержанием "1) столько-то строк содержало цифры. 2) столько то строк не содержало цифры. И эти строки должны обновляться при каждом нажатии на "Отправить".
     

    Вложения:

  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    Смотри, получил текст из формы, определил, что там,
    потом записал в сессию результат,
    например если содержит цифру, то прибавляем $_SESSION['exist'] += 1;
    Вот и статистика.
     
  9. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
    Более менее разобрался. Получилось что-то вроде
    PHP:
    1.     <form action="" method="POST">
    2.         Строка: <input type="text" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>">
    3.         <input type="submit" value="Отправить">
    4.     </form>
    5.     <?php
    6. // Указываем исходные значения в сессии
    7. if(!isset($_SESSION['numeric']))
    8.     $_SESSION['numeric'] = 0;
    9. if(!isset($_SESSION['not_numeric']))
    10.     $_SESSION['not_numeric'] = 0;
    11. // Если пришла форма
    12. if(!empty($_POST))
    13. {
    14.     // Если в названии есть цифры
    15.     if(preg_match("/[0123456789]/", $_POST['name']))
    16.         $_SESSION['numeric']++;
    17.     // Если нет
    18.     else
    19.         $_SESSION['not_numeric']++;
    20. }
    21.  
    22. ?>
    23. Статистика:<br>
    24. Запросов с цифрами <?=$_SESSION['numeric']?> <br>
    25. Запросов без цифр <?=$_SESSION['not_numeric']?>
    Только вот сессия не уничтожается при закрытии браузера.( Или это уже дело в куках браузера?
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Дело в настройках PHP. Вообще, по дефолту, должна уничтожаться.
     
  11. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.340
    Симпатии:
    44
    1. Сессии не отвечают этому условию
    2. Сессии нахнерн не нужны тут. Эта задача решается передачей статистики в hidden поле.
     
  12. jzetjo

    jzetjo Новичок

    С нами с:
    28 авг 2016
    Сообщения:
    6
    Симпатии:
    0
    А можно пример? Никогда не сталкивался в своей очень небольшой практики с hidden полями
     
  13. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @jzetjo, обычные поля. Единственная разница - они скрыты для пользовательских глаз. Но на странице они есть, и в исходном оде их можно увидеть.
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1. <?php
    2. header('Content-Type: text/html; charset=utf-8');
    3. $d2 = 0;
    4. if (isset($_POST['d'], $_POST['d2'])) {
    5.     $d2 = htmlspecialchars ( (int)$_POST['d'] + (int)$_POST['d2'] );
    6. }
    7. ?>
    8. <!DOCTYPE html>
    9. <html>
    10. <head>
    11.     <title></title>
    12. </head>
    13. <body>
    14.     <form method="post" action="?">
    15.         <input type="text" name="d" placeholder="number">
    16.         <input type="hidden" name="d2" value="<?=$d2?>">
    17.         <h1><?=$d2?></h1>
    18.         <input type="submit">
    19.     </form>
    20. </body>
    21. </html>