Как скрыть URL от пользователей при отправке этой формы? - PullRequest
1 голос
/ 09 июня 2010

У меня есть форма со многими полями ...

При отправке этих полей я использую метод POST , который скрывает фактические переменные, передаваемые в PHP стр.

Однако я не могу избавиться от полной ссылки.

Изменение с GET на POST действительно сделало всеполя формы невидимы в URL , но эта часть все еще видна:

 mydomain.com/bin/query#

Я хочу, чтобы она была невидимой, или произнесите:

 mydomain.com/search

У меня естьmod_rewrite включен, поэтому есть возможность сделать это с mod_rewrite Я думаю, но я новичок в mod_rewrite, поэтому мне нужна ваша помощь ...

Как мне скрыть этот URL?

Если вам нужно больше информации, дайте мне знать ...

Ответы [ 5 ]

3 голосов
/ 09 июня 2010

При отправке от вы должны указать атрибут действия для формы.Я предполагаю, что ваше действие mydomain.com/bin/query#, но вы хотите, чтобы оно было mydomain.com/search.Затем вы должны использовать mydomain.com/search в сочетании с действием attibute и следующей перезаписью:

RewriteEngine on 
RewriteRule ^/search$ /bin/query [QSA,NC]

Это будет означать mydomain.com/serach в URL браузера.

EDIT :Используя флаг QSA, вы можете передать параметры GET в ваш скрипт запроса.NC делает перезапись без учета регистра.

Ваша форма должна выглядеть следующим образом:

<form action="/search" method="post">
...
</form>
2 голосов
/ 09 июня 2010

Предположим, что вы новичок в веб-мире. Вот два правила, которые вы должны изучить:

  1. Согласно стандарту HTTP, поиск должен выполняться методом GET, а не POST
  2. Скрытие URL - это нонсенс. Хотя вы можете использовать mod_rewrite, чтобы украсить URL, а не «скрыть» его.
  3. Скрывать переменные поиска - это нонсенс, без оправданий. поиск должен выполняться методом GET, а не POST
2 голосов
/ 09 июня 2010

Вы не должны скрывать URL, это пустая трата времени.

Браузер пользователя (который находится под контролем пользователя) отправляет данные на ваш сервер. Пользователи всегда смогут отправлять любые данные, которые им нравятся, в обработчик формы (поскольку вы не можете указать браузеру, куда отправить его, не предоставив эту информацию пользователю). Использование mod_rewrite просто меняет URL-адрес (поэтому скрытие его не приносит пользы для безопасности), а поисковые системы не выполняют POST-запросы (поэтому преимущества для SEO не существует).

Если вы ищете косметическое средство, то я действительно не стал бы беспокоиться об этом. Количество пользователей, которые заметят URL-адрес формы, крошечной, а число, которое заботится, еще меньше.

1 голос
/ 09 июня 2010

Что вы можете сделать, это выполнить перенаправление после обработки вашей формы.

// process form vars e.g.,
save_values($_POST);
// redirect
header('Location: /some/other/page');
exit;

Пользователи браузера будут видеть только ту страницу, которую вы в конечном итоге тоже перенаправите.По-прежнему будет возможно проверять HTTP-запросы / ответы, чтобы определить местоположение обработки формы, если вы знаете, что делаете.

1 голос
/ 09 июня 2010

Попробуйте RewriteRule ^/search /bin/query, тогда вы можете изменить действие формы на / search

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