2014-11-28 3 views
0

У меня есть этот вид:Внешняя форма действий. Опубликовать подтверждение в PHP. Без поддержки Javascript

<form name="form2" method="post" action="http://1.1.101.1/reg.php"> 
     <input id="field12" type="text" value="{$username}" name="username" maxlength="32" placeholder="Username" required="required" /> 
     <input id="field22" type="text" value="{$password}" name="password" maxlength="32" placeholder="Password" required="required" /> 
     <input name="checkbox" type="hidden" id="checkbox" value="checkbox" /> 
     <input type="hidden" name="url" value=""/><br/> 
     <input type="submit" value="Connect to WiFi" name="button1" /><br/> 
    </form> 

действие является внешней URL.

Как я могу проверить свой php, когда кнопка submit отправлена ​​(name = button1), прежде чем она перейдет к этому URL-адресу.

Прямо сейчас у меня есть это, но его не работает, потому что он переходит непосредственно к URL-адресу действия из формы.

if ($_SERVER['REQUEST_METHOD'] == "post") { 
    var_dump($_POST); 
    exit; 
} 
+0

Я думаю, вы должны попробовать javascript. – vijaykumar

+0

Можно ли и без js? –

+0

Невозможно без JS. Когда вы отправляете форму, действие по умолчанию заключается в том, чтобы отправить форму в URL-адрес, указанный в атрибуте 'action'. Единственный способ выполнить проверку перед отправкой - это перехватить отправку с помощью JS и выполнить необходимую процедуру проверки перед перемещением. – Terry

ответ

0

Вы не можете.

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

После этого вы не сможете надежно перенаправить запрос при сохранении POST.

-2

Попробуйте

<?php 
if(isset($_POST['button1'])){ 
//action 
header('Refresh:3; url=http://1.1.101.1/reg.php'); 
} 
?> 
+0

Это не работает, потому что действие формы является внешним URL. и действие вызывается перед моим собственным скриптом php. –

+0

Сделайте свое действие «#» и попробуйте сделать код – vijaykumar

+0

Удалите ссылку в действии формы и попробуйте приведенный выше сценарий, она должна работать –

0

У вас есть в основном два варианта, как я его вижу.

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

  • Проверка поля
  • Если проверка OK, POST данные на внешний URL-адрес с помощью CURL (или аналогичный)
  • Если POST для внешнего URL пошел OK, перенаправлять туда, куда пользователь должен в конечном итоге, в конце концов

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

Этот последний метод, безусловно, можно возиться, поскольку легко использовать правильные значения, а затем изменять данные в HTML, прежде чем делать окончательный submit. Поэтому, если безопасность важна здесь, вы застряли с первым вариантом.

Смежные вопросы