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

Структура двухстраничного процесса выглядит следующим образом:

**Validation Page**
if (post detected)
{
 validate input
 if (no error)
 {
  record query options
  redirect to results page
  exit
 }
 else
 {
  output error message
 }
}
display form

**Results Page**
if (query options are set)
{
 process query
 display results
}
else
{
 redirect to validation page
}

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

0
Question Overflow 19 Авг 2012 в 18:30
Если это не интрасеть или локальное приложение, то на этот вопрос сложно ответить, не указывая на какую-нибудь вики-страницу по безопасности. Forms / Validation / Sanitizing / Security - довольно раздутый процесс, поэтому фреймворк - лучшее решение.
 – 
Philip
19 Авг 2012 в 18:54

1 ответ

Лучший ответ

Вы можете просто установить действие формы для себя (или оставить его пустым в строках action = "", и оно все равно будет указывать на себя, затем используйте простую проверку, чтобы увидеть, были ли отправлены какие-либо данные формы, чтобы определить, следует ли показать пустую страницу или результаты поиска:

if(isset($_REQUEST['searchStuffs']) // Not sure if you are GET or POST'ing
{
    if(!empty($_REQUEST['searchStuffs'])
    {
        // do stuff here to get the form result, then display it
    }
    else
    {
        // The form was submitted empty, so show an error
    }
}
else
{
    // Display the normal search/form page as it hasn't been sent.
}

Вы также можете использовать следующий подход (который я, вероятно, использовал бы, хотя это дополнительная работа):

$searchBool=false;
if(isset($_REQUEST['searchStuffs']) // Not sure if you are GET or POST'ing
{
    if(!empty($_REQUEST['searchStuffs'])
    {
        if(...)// valid search criteria
        {
            $searchBool=true;
            // Do stuff to get search results
            $searchResults='some output or data';
        }
    }
}

// Echo normal input form
if($searchBool)
{
    echo $searchResults;
}
1
Fluffeh 19 Авг 2012 в 18:51
Извините, мой вопрос немного абстрактный, форма должна быть всегда, независимо от того, есть ли результаты или нет.
 – 
Question Overflow
19 Авг 2012 в 18:49
Посмотрите последнюю часть моего кода, я немного изменил ответ
 – 
Fluffeh
19 Авг 2012 в 18:52
Мне нравится ваш второй подход, спасибо .. Я думаю, что продолжу эту линию, но мне нужно выполнить некоторые акробатические маневры над большими кусками кода ... головная боль ... спасибо, что дали мне скелет для работы :)
 – 
Question Overflow
19 Авг 2012 в 19:01