#php #html #mysql
#php #HTML #mysql
Вопрос:
Я пытаюсь разработать PHP — страницу для взаимодействия с MySQL. Для сохранения значений в форме после недопустимого ввода я стараюсь использовать функцию session_cache_limiter («частный, должен пройти повторную проверку») и заголовок («Управление кэшем: частный, должен пройти повторную проверку»). однако все эти две функции не работают. Все содержимое формы исчезло после обновления страницы. Я не знаю, в чем проблема. Спасибо за любую помощь! это код функции session_cache_limiter, я добавляю его в самом начале блока кода PHP, перед функцией session_start.
lt;?php session_cache_limiter('private, must-revalidate'); session_start(); ?gt; lt;!DOCTYPE HTMLgt; lt;htmlgt; ... lt;/htmlgt;
Для функции заголовка я добавляю это в структуру if-else, когда вместо этого происходит недопустимый ввод. Итак, код таков:
... lt;bodygt; lt;?php if(preg_match('/[A-Z][a-z]*s[A-Z][a-z]*/',$_REQUEST['name']) != 1){ header('Cache-control: private, must-revalidate'); echo "lt;scriptgt;alert('invalid name!')lt;/scriptgt;"; }else if(preg_match('/[w] (.[w] )*@[w] .[w] /i',$_REQUEST['email']) != 1){ header('Cache-control: private, must-revalidate'); echo "lt;scriptgt;alert('invalid email!')lt;/scriptgt;"; }else{ ...(the pdo request for MySQL)... } ... ?gt; lt;/bodygt; ...
Я не пытался смешивать эти две функции вместе, но реализовывал их соответственно. Я надеюсь попросить о некоторой помощи в том, в чем заключаются проблемы и как их устранить. Миллион раз спасибо!
Комментарии:
1. Эти заголовки не имеют никакого отношения к вашим целям. Если вы хотите повторно отобразить введенные данные, вы должны повторить их в правильном месте. Подумайте также о повторении сообщений об ошибках рядом с полем в форме, чтобы пользователь мог видеть их все сразу. Использование предупреждений для этого немного сложнее
Ответ №1:
1.Вы можете использовать ajax, чтобы страница не перезагружалась после отправки. 2. Вы можете сохранять данные, заполненные во время сеансов. 3. Вы можете сохранять данные в виде файлов cookie.
Рекомендуется только первый вариант, но все они будут работать.