PHP взломать - открыть два сайта при отправке формы - PullRequest
1 голос
/ 10 мая 2011

После того, как кто-то заполняет форму на нашем веб-сайте и нажимает кнопку «Отправить», он / она направляется на целевую страницу.Я хотел бы изменить этот поток так, чтобы при отправке (1) URL1 открывался как новое окно;и (2) пользователь перенаправлен с текущей страницы формы на URL2.

Можете ли вы помочь?

фрагмент кода -

if(! isset($RedirectOnSuccess))
    $RedirectOnSuccess = 'oldURL';

нужна твоя помощь в соединении.Я использую MODx и сама веб-страница вызывает скрипт php со следующим - [! FORM_SNIPPET?& RedirectOnSuccess = oldURL!]

Ответы [ 3 ]

2 голосов
/ 10 мая 2011

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

Избегайте решений, в которых просмотр страницы результатов формы зависит от javascript, поскольку некоторые (необычные) пользователи могут отключить ее. Если он реализован, как указано выше, такие пользователи пропустят ваше всплывающее окно, но форма все равно будет проходить.

Вы можете использовать jQuery для реализации этого без изменения php-кода, который MODx использует для генерации вашей формы, и вместо этого прикрепить событие click к кнопке отправки формы, поместив javascript в заголовок xhtml. Например:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
    <script src="/colorbox/jquery.colorbox.js"></script>
    <script type="javascript">
    $("#FormID.input[type=submit]").click(function(e) {
      /* prevent form from submitting */
      e.preventDefault();
      e.stopPropagation();

      /* on colorbox close, submit form */
      $(document).bind('cbox_close', function(){
        e.submit(); // submit the form on close
      });

      /* open the colorbox */
      .colorbox({href:"http://example.com/url1"});
    });
    </script>

Я использовал ColorBox здесь, но та же идея должна применяться к другим альтернативам лайтбокса. Я не проверял в браузере это, поэтому обязательно протестируйте и адаптируйте при необходимости.

2 голосов
/ 10 мая 2011
1 голос
/ 10 мая 2011

Учитывая проблемы с блокировщиками всплывающих окон, лучше всего выбрать новое окно с HTML-кодом при загрузке формы.

<form target="_blank">

Затем, используя JavaScript (возможно, через opener.location.href во всплывающем окне), вы можете перенаправитьглавное окно на другой URL.

...