Случатся ли плохие вещи, если я буду контролировать содержимое $ _POST? - PullRequest
0 голосов
/ 02 апреля 2011

В мои дни, когда я писал веб-приложения, я упускал простой способ для сценария PHP направлять другой сценарий PHP при передаче данных без использования URL

Браузеры могутнезаметно передавать данные в скрипт PHP, используя массив $ _POST.Поэтому я разрабатываю скрипт, который будет выгружать содержимое $ _SESSION ["POST"] в массив $ _POST для имитации передачи данных поста, а затем очищает $ _SESSION ["POST"].

ДляНапример, страница X содержит форму входа.Страница X указывает на страницу Y для проверки данных.Страница Y обнаруживает, что информация для входа в систему неверна, и перенаправляет обратно на страницу X, которая теперь отображает сообщение об ошибке «Информация для входа в систему неверна» из $ _POST.

Я с ума схожу, что пропустила эту функцию?Есть ли какой-то другой способ сделать это легко, которого мне не хватает?

Пожалуйста, ответьте всем, что может быть полезным.

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Вы можете использовать сеанс.На странице X вы поместите данные в сеанс.На странице Y вы должны проверить данные и обработать перенаправление.Вы также можете поместить свое сообщение об ошибке в сеанс.

Сеанс сохраняется между запросами, поэтому это идеальное место для хранения данных такого типа.

РЕДАКТИРОВАТЬ

ОК, я бы поработал с переменными сеанса, но если вы хотите избежать того, что у вас есть еще несколько вариантов, о которых я могу подумать, кроме публикации:

  1. Вы можете использовать файлы насервер (например, временные файлы).Используйте ключ сеанса пользователя, чтобы определить, какой файл принадлежит ему, и вы можете читать и записывать любые данные, которые вам нужны.
  2. Вы можете поместить данные в базу данных.Это тоже сработало бы.

Конечно, ни один из них не является настоящим постом.Если вам нужна настоящая публикация, у вас есть еще два варианта.

  1. Сначала вы можете вернуть данные на страницу в скрытой форме и использовать JavaScript для запуска POST.Это просто сделать, но требует, чтобы данные проходили через браузер.Это означает, что вам нужно позаботиться о том, чтобы пользователь не изменил данные, а пользователь должен был включить JavaScript.Вы можете проверить контрольную сумму данных, чтобы убедиться, что они не изменены, но проблема JavaScript неразрешима.

  2. Другой способ сделать это - вывести пользователя из уравнения полностью.Когда пользователь отправляет на страницу A, страница A может сделать POST на страницу B, проверить ответ, а затем перенаправить пользователя в нужное место.Это было бы так же, как если бы вы должны были сделать вызов JSON или SOAP сторонней службе, за исключением того, что вы контролируете эту службу.Прошло немного времени, но я считаю, что HttpRequest - это класс, который нужно использовать для этого.

Было бы идеально, если бы этот URL-адрес, который вы проверяете, возвращалпростой ответ («правда», «ложь», «да», «нет», «хорошо», «плохо» и т. д.), но пока вы можете определить по ответу, были ли они успешными или нет, вы можете сделатьit.

Теперь я должен заметить, что я согласен с mvds, это звучит как функция, которая должна быть включена на странице A, чтобы она могла выполнять всю работу, но код можно было передавать другим страницам.Наличие страницы A, публикации на странице B и последующего перенаправления на A или C кажется излишне сложным.Страница А может легко выполнить все это.Я прочитал ваш комментарий к его ответу, но, похоже, должен быть другой способ сделать это.

0 голосов
/ 02 апреля 2011

Абстрагируйте выполненные действия от функций и / или классов, и потребность в таких кладжах исчезнет.Конкретно: обе страницы X и Y могут вызывать одну и ту же функцию для проверки опубликованных данных для входа в систему.

Перенаправление страницы X на страницу Y для выполнения проверки означает возвращение контроля клиенту, тогда как вы можете (и должны) проверятьданные сразу.

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