- Постоянные переменные в PHP после перезагрузки страницы
- Решение
- Другие решения
- PHP Передать переменную на следующую страницу
- Передача данных в запросе
- Передача данных в сеансе
- Безопасность
- Как установить значение переменной без перезагрузки страницы?
- Войдите, чтобы написать ответ
- Почему не подключается файл JS к файлу html?
Постоянные переменные в PHP после перезагрузки страницы
Я очень плохо знаком с PHP, поэтому, пожалуйста, извините, если это глупый вопрос.
Итак, вот сценарий.
Я пишу PHP все на одной странице, которая получает случайное слово из массива, шифрует слово, а затем позволяет пользователю угадать слово.
Теперь я использую isset (), поэтому он объявляет переменную, а затем, когда нажимают на submit, он получает входные данные пользователя через _POST ().
Теперь проблема
Мне нужно, чтобы вычисляемая переменная оставалась постоянной, но как только страница перезагружается, она регенерирует переменную.
Есть ли в любом случае, я могу пройти это?
if(!isset($_POST['Submit'])) < define("shuffledWord", GetShuffWord()); $tempWord = shuffledWord; // showing the user shuffled word echo " "; > else < $tempWord = shuffledWord; echo " "; echo "else part"; > ?>
Другая проблема заключается в том, что если я объявляю переменную в if, я не могу использовать переменную в else без ее повторной генерации.
Решение
Вы можете просто включить значение в качестве скрытого поля ввода в вашей форме.
Затем, когда форма отправлена, вы можете просто получить ее через $_POST[‘myCalculatedValue’]
Другие решения
Вы можете использовать сеанс и поставить галочку, что если у сеанса он уже не перезаписан.
И когда вы хотите перезаписать, вы можете сделать это, передав еще один флаг скрипту в вашем пост-запросе.
PHP Передать переменную на следующую страницу
Это кажется довольно простым, но я не могу найти хороший способ сделать это.
Скажем, на первой странице я создаю переменную
И действие формы для этой страницы – «Page2.php». Итак, в файле Page2.php, как я могу получить доступ к этой переменной? Я знаю, что могу делать это с сессиями, но я думаю, что это слишком много для простой строки, и мне нужно просто передать простую строку (имя файла).
HTML / HTTP является безстоящим, другими словами, то, что вы делали / видели на предыдущей странице, полностью отключено от текущей страницы. За исключением случаев, когда вы используете что-то вроде сеансов, файлов cookie или GET / POST. Сессии и файлы cookie довольно просты в использовании, причем сеанс гораздо безопаснее, чем файлы cookie. Более безопасный, но не полностью безопасный.
//On page 1 $_SESSION['varname'] = $var_value; //On page 2 $var_value = $_SESSION['varname'];
Не забудьте запустить инструкцию session_start() на обеих этих страницах, прежде чем пытаться получить доступ к массиву $_SESSION , а также перед тем, как любой вывод будет отправлен в браузер.
//One page 1 $_COOKIE['varname'] = $var_value; //On page 2 $var_value = $_COOKIE['varname'];
Большая разница между сеансами и куки-файлами заключается в том, что значение переменной будет храниться на сервере, если вы используете сеансы и на клиенте, если вы используете файлы cookie. Я не могу придумать какой-либо веской причины использовать файлы cookie вместо сеансов, за исключением случаев, когда вы хотите, чтобы данные сохранялись между сеансами, но даже тогда, возможно, лучше сохранить их в БД и получить их на основе имени пользователя или идентификатора.
Вы можете добавить переменную в ссылку на следующую страницу:
Это создаст переменную GET.
Другой способ заключается в том, чтобы включить скрытое поле в форму, представленную на второй странице:
И затем на второй странице:
//Using GET $var_value = $_GET['varname']; //Using POST $var_value = $_POST['varname']; //Using GET, POST or COOKIE. $var_value = $_REQUEST['varname'];
Просто измените метод post формы, если вы хотите сделать это через сообщение. Оба одинаково небезопасны, хотя GET легче взломать.
Тот факт, что каждый новый запрос, за исключением данных сеанса, совершенно новый экземпляр скрипта поймал меня, когда я впервые начал кодирование в PHP. Как только вы привыкнете к этому, это довольно просто.
Спасибо за ответы выше. Вот как я это сделал, надеюсь, это поможет тем, кто следует. Я хочу передать регистрационный номер с одной страницы на другую, поэтому regName и regValue :
Создайте свою первую страницу, назовите ее set_reg.php :
Создайте свою вторую страницу, назовите ее get_reg.php :
Хотя это не так полно, как ответ выше, для моих целей это просто иллюстрирует связь между различными элементами.
Передача данных в запросе
Вы можете вставлять его как скрытое поле в свою форму или добавлять его URL-адрес формы
Обратите внимание, что это также иллюстрирует использование htmlentities и urlencode при передаче данных.
Передача данных в сеансе
Если данные не нужно передавать на клиентскую сторону, тогда сеансы могут быть более уместными. Просто вызовите session_start () в начале каждой страницы, и вы можете получить и установить данные в массив $ _SESSION.
Безопасность
Поскольку вы заявляете, что ваше значение на самом деле является именем файла, вам необходимо знать о последствиях безопасности. Если имя файла поступило с клиентской стороны, предположите, что пользователь вмешался в это значение. Проверьте его на достоверность! Что происходит, когда пользователь передает путь к важному системному файлу или файл под их контролем? Может ли ваш сценарий использоваться для «зондирования» сервера для файлов, которые существуют или не существуют?
Поскольку вы явно начинаете здесь, стоит упомянуть, что это касается любых данных, поступающих в $ _GET, $ _POST или $ _COOKIE. Предположим, ваш худший враг создал содержимое этих массивов и код соответственно!
Существует три метода передачи значения в php.
Эти три метода используются для разных целей. Например, если мы хотим получить наше значение на следующей странице, мы можем использовать метод post ($ _POST) как: –
Если нам требуется значение переменной на более чем одной странице, мы можем использовать переменную сеанса как: –
Перед использованием этого синтаксиса для создания переменной SESSION сначала нужно добавить этот тег в самом начале нашей php-страницы
Метод GET обычно используется для печати данных на той же странице, которая использовалась для ввода данных от пользователя. Его синтаксис выглядит так:
Метод POST, как правило, более безопасен, чем GET, потому что когда мы используем метод Get, чем он может отображать данные в строке URL. Если данные более чувствительные данные, такие как пароль, то это может быть inggeris.
Сессии были бы единственным хорошим способом, вы также могли бы использовать GET / POST, но это было бы потенциально неуверенно.
Лучше всего и проще всего передавать переменные, как я объяснил это здесь: Сохранение всех данных POST на СЕССИИ
используя скрытое поле, мы можем передать php varibale на другую страницу
передать переменную php в значение скрытого поля, чтобы вы могли получить доступ к этой переменной на другую страницу
Как установить значение переменной без перезагрузки страницы?
Здравствуйте!
Подскажите пожалуйста, как задать значение php переменной после загрузки страницы.
Когда страница загрузилась, php переменная получила значение 1, например.
Как задать этой переменной другое значение, без перезагрузки страницы, с помощью jquery?
Попробую поточнее описать задачу.
Есть два поля в которых указывается количество дней и часов.
После ввода значений и нажатии кнопки посчитать, с помощью jquery идет расчет.
Надо значение этого расчета задать переменной php
Когда страница загрузилась — php закончил выполнение. Он уже не помнит переменных (за исключением сессионных)
Даже если Вы выполните запрос JQuery то сформировав ответ php так же умрет.
Выход — использование сессионых переменных. Или более точная постановка цели изменения переменной.
.
Дополнение по уточненным данным:
а в some.php — встретить эти данные
Если я правильно понял вопрос, посылаете ajax-запрос к своей страничке на php и обрабатываете его уже кодом php