Отправить форму с скрытым атрибутом действия - PullRequest
0 голосов
/ 25 октября 2011

Люди

Я хочу знать, как отправить форму без показанного атрибута действия.Например,

<form action="someact.php" method="post">
...
</form>

Некоторые предлагают использовать $_PHP['SELF'], но я хочу, чтобы моя форма обрабатывалась с использованием другого php-файла, такого как разделение части пользовательского интерфейса и части процесса, чтобы никто не мог увидеть мой файл процесса?

Я хочу вот так

<form method="post">
...
</form>

Но он обработан в нужный файл.

Помогите, пожалуйста?

Ответы [ 5 ]

3 голосов
/ 25 октября 2011

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

Сказав это, вы можете сделать что-то вроде этого:

<form id="hidden_action_form" method="post">
  <!-- ... -->
</form>
<script type="text/javascript">
  document.getElementById('hidden_action_form').action = 'someact.php';
</script>
3 голосов
/ 25 октября 2011

С какой стати вам нужен «скрытый» файл процесса?Это невозможно: браузер должен знать, куда должен быть отправлен запрос.

Если вы объясните проблему, с которой вы столкнулись, а не проблему, возникшую в результате вашего решения этой проблемы, другие люди могут вам помочь.

0 голосов
/ 25 октября 2011

У меня сложилось впечатление, что вы смешиваете две вещи.PHP-файл находится только на вашем сервере и не будет отправлен в браузер.Сервер (обычно apache httpd) обрабатывает файл и генерирует из него HTML-код.Этот код затем отправляется в браузер.

Когда у вас есть форма, вы ДОЛЖНЫ иметь связанное действие, потому что, как указал CodeCaster: браузер должен знать, куда отправлять данные.Это как гиперссылка без установки атрибута href.Ничего не может случиться, потому что браузер не знает, что делать.

0 голосов
/ 25 октября 2011

Вы не можете этого сделать.Форма всегда должна иметь атрибут действия.Никто не может видеть содержимое файла, который будет обрабатывать данные формы (если это ваша проблема).

0 голосов
/ 25 октября 2011

Вы не сможете скрыть это без JavaScript.Даже javascript не будет скрывать это, но может публиковать данные в другом файле, пока пользователь будет перенаправлен в (публичный) файл, определенный в действии формы.

Вы можете использовать ajax post() вызов данных POST в другой файл.См. Ссылку, предоставленную для этого с jQuery, и убедитесь, что ajax сначала отправляет сообщение, а затем перенаправляет / загружает пользовательский контент.

Обратите внимание, что если у клиента отключен JavaScript, весь POST будет не быть выполненным.Кроме того, если кто-то заглянет в ваш js, он также увидит там скрытое имя файла 1011 *, если только вы не защитите файл js паролем.

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