Intereting Posts
Как отлаживать (и исправлять) Symfony2 | 3 маршрута? Юникод-суррогатные пары Google Oauth IMAP запрашивает разрешение каждый раз может ли php определять размер / разрешение монитора браузера клиента? Могу ли я создать приложение exe для Windows с помощью PHP-программы и с помощью базы данных? Symfony2.4 form 'Эта форма не должна содержать лишних полей перенаправлять на другую домашнюю страницу, следуя роли пользователя, используя FOSUserBundle Безопасность PHP: извлечение PHP-файла с сервера, без обработки Почему этот код pdo :: mysql разбивается на окна? Как проверить, имеет ли изображение прозрачность с помощью GD? переписать расширение .php Рекомендации по проверке защищенных методов с помощью PHPUnit (на абстрактных классах) Как Laravel может отражать другой сайт, размещенный на одном сервере? Как я могу получить возвращаемое значение части Laravel? Библиотека PHP для создания удобных относительных временных меток

Сохранять значение в форме после отправки PHP

Я вызываю эти функции из контроллера, чтобы получить форму и значения из формы. Мой вопрос в том, как я могу сохранить значения в форме после того, как сбой подачи? Я пробовал что-то вроде этого:

<input type="text" name="myField1" value="<?php echo isset($_POST['myField1']) ? $_POST['myField1'] : '' ?>" /> 

но не может заставить его работать.

 private $m_username = 'username'; private $m_password = 'password'; private $m_registerButton = 'registerButton'; public function RegisterUserBox(){ return '<form method="post"> <fieldset> Username: <input type="text" name="'.$this->m_username.'" /> Password: <input type="password" name="'.$this->m_password.'" /> <input type="submit" value="Register" name="'.$this->m_registerButton.'"/> </fieldset> </form>'; } public function GetUsername(){ if(isset($_POST[$this->m_username])){ return $_POST[$this->m_username]; } } public function GetPassword(){ if (isset($_POST[$this->m_password])){ return $_POST[$this->m_password]; } } public function TriedToRegister(){ if (isset($_POST[$this->m_registerButton])){ return true; } return false; } 

[edit: run this on localhost]

autocomplete не работает во всех браузерах; кроме того, это всего лишь подсказка, поэтому файлы cookie остаются единственной опцией. Решение ниже прекрасно работает, однако будет здорово, если другие пользователи вносят альтернативные способы для этого популярного запроса: Keep value in form after submitting .

 <html> <head> <script> function setCookie(c_name, value, exdays) { var exdate = new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString()); document.cookie = c_name + "=" + c_value; } function getCookie(c_name) { var i, x, y, ARRcookies = document.cookie.split(";"); for (i = 0; i < ARRcookies.length; i++) { x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); x = x.replace(/^\s+|\s+$/g, ""); if (x == c_name) { return unescape(y); } } } function store() { var inputs, index; inputs = document.getElementsByTagName('input'); for (index = 0; index < inputs.length - 1; ++index) { setCookie(inputs[index].name,inputs[index].value,1); } return false; } </script> </head> <body> <form method="post" action="back.php" onsubmit="store()" > firstname<input type="text" name="firstname"> lastname<input type="text" name="lastname"> emailid<input type="text" name="emailid"> <input type="submit" > </form> <script> (function load(){ var inputs, index; inputs = document.getElementsByTagName('input'); for (index = 0; index < inputs.length - 1; ++index) { inputs[index].value = getCookie(inputs[index].name); } return false; })(); </script> </body> </html> 

Изображение-1Изображение-2Изображение-3Изображение-4

 <html> <body> <form method="post" action="back.php" autocomplete="on" > <input type="text" autocomplete="on" > <input type="submit" > </form> </body> </html> 

Перед вашей формой создайте экземпляр объекта, который получит данные $_POST

 $userbox = new Userbox; 

Затем обрабатывайте данные $_POST , если они есть:

 if(isset($_POST['submit']) && $_POST['submit'] === 'userboxsubmit'){ $userbox->process_post(); } 

Затем выведите форму:

 <input type="text" name="myField1" value="<?php echo $userbox->myField1; ?>" />