У php есть память?

Я программирую почти 3 месяца, и я только что выучил php, и у меня возник вопрос: есть ли у php память?
Я имею в виду, если я создам новую переменную с помощью формы, когда я буду обновлять интернет-страницу, будет ли переменная еще существовать?

1

Решение

И да и нет).

Всемирная паутина в основном Реализация REST. Это означает, что сервер не остается активным, чтобы запомнить состояние между запросами (это без гражданства).

И это соответствует тому, как работает PHP. Скрипт PHP запускается ненадолго. Браузер запрашивает URL, PHP-скрипт запускается, генерирует вывод и завершается. Любые переменные, которые находятся в памяти, тогда забываются.

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

Вы можете сделать это несколькими способами.

  1. Ссылки. Если вы выводите внутреннюю ссылку в PHP, вы можете добавить туда переменную (например, «имя»), чтобы ваш URL стал example.com/page.php?name=bob, Это не очень удобно, так как в URL много мусора. Кроме того, URL-адреса с определенными значениями хранятся в истории браузера, поэтому пользователь может легко и случайно вернуться к URL-адресу, который имеет устаревшее значение для переменной.

  2. Печенье. Хорошо известно, и гораздо проще и удобнее, чем переменные в ссылках. Вы можете установить cookie в PHP на сервере, чтобы отправить его вместе с ответом клиенту (браузеру). Браузер будет отправлять куки обратно с каждым новым запросом. Таким образом, вы можете хранить свою переменную там, и она будет сохранена. Вы можете установить cookie в PHP, используя setcookie функция, и вы можете прочитать куки, используя $_COOKIE.

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

Чтобы решить эту проблему, вам нужно всего лишь отправить уникальный код в куки, с помощью которого вы можете определить, что следующий запрос принадлежит тому же сессия. Используя это идентификатор сессии, Вы можете найти ту переменную, которая была сохранена на сервере в одиночку.

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

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

Начинается с функции session_start (). С помощью этой функции вы начинаете сеанс. PHP проверит, содержат ли куки идентификатор сессии и загрузит переменные предыдущего запроса в суперглобальный $_SESSION, Если сеанса не было, генерируется новый уникальный идентификатор сеанса, который добавляется в файлы cookie, и $_SESSION инициализируется в пустой массив.

Поэтому после этого вы можете использовать этот суперглобальный элемент для хранения значений в:

<?php
session_start();
if (!array_key_exists('start', $_SESSION))
$_SESSION['start'] = time(); // Save the start time of the session

echo 'This session started at ' . date($_SESSION['start'])
. '. And now it is ' . date(time()) . '.';

Если вы откроете вышеупомянутый скрипт через браузер и обновите страницу, вы увидите, что время между обновлениями меняется, а исходное время запуска сохраняется и отображается снова и снова. Итак, хотя PHP не помнит нормальные переменные, вы можете использовать сессий сохранить конкретные значения.

Подробное описание этих функций можно найти в PHP: сессии.

2

Другие решения

Вы можете сделать это через сессию

//set session
session_start();
$_SESSION["test"] = "data33";

затем,

//return session
session_start();
echo $_SESSION["test"];

или как сказал «mateop»: вы можете использовать куки для хранения данных в течение более длительного времени 🙂

http://www.w3schools.com/php/php_cookies.asp

1

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

0

HTTP — это протокол без сохранения состояния, который означает, что после обновления страницы сервер даже не помнит, откуда поступил запрос. —

http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

Чтобы справиться с этим, у нас есть сессия — http://php.net/manual/en/book.session.php (Эта ссылка содержит все детали)

Вы должны работать над этими основами, и ваш вопрос должен быть дан ответ. Для начала перейдите по ссылкам в этом посте.

Код ссылки будет: —

<?php
session_start();
if(isset($_SESSION['var']))
echo $_SESSION['var'];
else
$_SESSION["var"] = "hello";
?>
0
По вопросам рекламы [email protected]