POST на другую страницу в зависимости от значения SELECT? - PullRequest
0 голосов
/ 14 января 2010

У меня есть форма, в зависимости от выбранного значения моего <select> ящика, который я хотел бы отправить на другую страницу.

Я не знаю лучшего способа сделать это, но я думаю, что, возможно, лучший способ - это создать промежуточную страницу, на которую всегда следует публиковать сообщения, а затем сделать так, чтобы промежуточная страница проверяла значение, отправленное из поля <select>, перенаправить значения POST на другую страницу в зависимости от того, что это такое. Если это лучший способ, как я могу это сделать? Если нет, то как лучше?

Спасибо !!

Ответы [ 4 ]

1 голос
/ 14 января 2010

Это хороший способ. Альтернатива - использовать Javascript для перехвата щелчка, переписать свойство action формы и submit() it.

Для вашего PHP, хотя:

Первая страница: <form action="intermediary.php" method="post"> <input id="submitTo"> <select value="1">goToFirstPage</select> <select value="2">goToSecondPage</select> </input> </form>

Вторая страница: <pre> <?php $url = ""; if($_POST["submitTo"] == "1") $url = "<a href="http://mysite.com/firstPage.php" rel="nofollow noreferrer">http://mysite.com/firstPage.php</a>";</p> <pre><code> if($_POST["submitTo"] == "2") $url = "http://mysite.com/secondPage.php"; header ("Location: $url"); ?>

Не размещайте реальные URL-адреса на первой странице, иначе вы столкнетесь с серьезными проблемами безопасности.

1 голос
/ 14 января 2010

это, безусловно, лучший метод для совместимости с пользователем.

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

header("Location: http://www.example.com/");

, который следует вызывать до того, как на страницу будет выведен какой-либо вывод.

Таким образом, пользователь даже не попадет на промежуточную страницу, когда нажимает кнопки вперед / назад.

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

0 голосов
/ 14 января 2010

1001 * Javascript *

function form_submitted(){
   switch(document.myform.select_name.value){
     case 'whatever':
        document.myform.target.value = "whatever_you_need";
        break;
     case 'whatever2':
        document.myform.target.value = "whatever_you_need_2";
        break;
    }
}

Затем либо назначьте эту функцию форме с атрибутом «onSubmit», либо используйте кнопку (а не кнопку «Отправить»), которая вызывает эту функцию, и добавьте document.myform.submit () в конце функции.

0 голосов
/ 14 января 2010

Я бы использовал javascript, чтобы изменить цель формы

если вы действительно хотите использовать php, попробуйте curl :

...