Здравствуйте. Имеется такая задача: Напишите простой сервер, который может получать строку из поля input (по GET и POST). В ответ он должен выводить на экран информацию о том, содержит ли строка хоть одну цифру или нет. Сервер так же должен вести статистику, сколько строк содержало цифры и сколько не содержало, и показывать эту информацию на экране после каждого запроса. Статистика должна храниться до того, как пользователь закроет браузер/уйдёт на другую страницу. Не могу понять, как сделать статистику на сервере и откуда вообще начинать плясать. Нужно ли использовать сессии? И как это все организовать. Код сделанного прилагается PHP: <form action="" method="POST"> Строка: <input type="text" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>"> <input type="submit" value="Отправить"> </form> <?php if (preg_match("/[0123456789]/", $_POST['name'])) { echo "В тексте есть цифры"; } else { echo "В тексте нет ни одной цифры"; } ?>
Подходит https://secure.php.net/manual/ru/book.session.php и https://secure.php.net/manual/ru/language.types.array.php
@jzetjo сессия это индивидуальный массив для пользователя, ты в него просто пиши статистику и показывай её, в массив можешь записать статистику?
С трудом понимаю как это можно реализовать в коде. И примеров никаких не могу найти. Я создаю сессию. По форме ввожу данные. Если PHP: print_r($_SESSION) то выводится последнее введенное значение на сайте. Никакой статистики не получается
С приведенного мной кода результат следующий(скриншот прилагается). Как по-моему должно работать: Под надписью "В тексте есть цифры" должно находится еще 2 надписи с примерным содержанием "1) столько-то строк содержало цифры. 2) столько то строк не содержало цифры. И эти строки должны обновляться при каждом нажатии на "Отправить".
Смотри, получил текст из формы, определил, что там, потом записал в сессию результат, например если содержит цифру, то прибавляем $_SESSION['exist'] += 1; Вот и статистика.
Более менее разобрался. Получилось что-то вроде PHP: <form action="" method="POST"> Строка: <input type="text" name="name" value="<?php if (isset($_POST['name'])) echo $_POST['name']; ?>"> <input type="submit" value="Отправить"> </form> <?php session_start(); // Указываем исходные значения в сессии if(!isset($_SESSION['numeric'])) $_SESSION['numeric'] = 0; if(!isset($_SESSION['not_numeric'])) $_SESSION['not_numeric'] = 0; // Если пришла форма if(!empty($_POST)) { // Если в названии есть цифры if(preg_match("/[0123456789]/", $_POST['name'])) $_SESSION['numeric']++; // Если нет else $_SESSION['not_numeric']++; } ?> Статистика:<br> Запросов с цифрами <?=$_SESSION['numeric']?> <br> Запросов без цифр <?=$_SESSION['not_numeric']?> Только вот сессия не уничтожается при закрытии браузера.( Или это уже дело в куках браузера?
1. Сессии не отвечают этому условию 2. Сессии нахнерн не нужны тут. Эта задача решается передачей статистики в hidden поле.
@jzetjo, обычные поля. Единственная разница - они скрыты для пользовательских глаз. Но на странице они есть, и в исходном оде их можно увидеть.
PHP: <?php header('Content-Type: text/html; charset=utf-8'); $d2 = 0; if (isset($_POST['d'], $_POST['d2'])) { $d2 = htmlspecialchars ( (int)$_POST['d'] + (int)$_POST['d2'] ); } ?> <!DOCTYPE html> <html> <head> <title></title> </head> <body> <form method="post" action="?"> <input type="text" name="d" placeholder="number"> <input type="hidden" name="d2" value="<?=$d2?>"> <h1><?=$d2?></h1> <input type="submit"> </form> </body> </html>