PHP передача сообщений между страницами - PullRequest
4 голосов
/ 08 января 2009

У меня есть форма на странице, где у пользователя есть входы для редактирования XML-файла, действие для формы - отправить ее в отдельный скрипт PHP, где редактирование происходит после того, как он нажал на submit. Сценарий будет либо успешным, либо неудачным, в любом случае он будет перенаправлен обратно на страницу формы через заголовок. Существует ли простой способ вернуть сообщение о подтверждении или сбое на страницу формы? Я могу сделать это в URL, но я предпочитаю сохранять чистоту.

Ответы [ 2 ]

16 голосов
/ 08 января 2009

То, как я это делал (и лично я использую), - это просто сеансы.

// process something
if($success) {
    flash_message('success','Did whatever successfully.');
} else {
    flash_message('error','Oops, something went wrong.');
}
header('Location: whatever.php');

Затем где-нибудь еще, в вашей библиотеке или файле функций или что-то еще:

function flash_message($type, $message) {
    // start session if not started
    $_SESSION['message'] = array('type' => $type, 'message' => $message);
}

Тогда в представлении / странице вы можете сделать:

if(isset($_SESSION['message'])) {
    printf("<div class='message %s'>%s</div>", $_SESSION['message']['type'],
    $_SESSION['message']['message']);
    unset($_SESSION['message']);
}

Это довольно просто, но вы можете расширить его оттуда, если вам нужно несколько сообщений и так далее. Суть в том, что я считаю, что сессии лучше для этого.

2 голосов
/ 08 января 2009

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

Затем, перед отправкой формы, всегда отправляйте форму и проверяйте ее наверху. Если есть сообщение для отображения, вы просто визуализируете форму и покажете сообщение вместе с данными пользователей, чтобы они могли решить проблему. Они могут отправить снова, и вы можете проверить ошибки снова. Если они успешно отправлены, вы можете перенаправить их в другое место или просто показать сообщение «Успех».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...