PHP или Ajax, как перенаправить на другую страницу

Тема в разделе "Другие языки", создана пользователем Acden, 18 май 2011.

Модераторы: Цукер
  1. Acden

    Acden

    Регистр.:
    12 янв 2008
    Сообщения:
    200
    Симпатии:
    12
    В развитие темы немного в другое русло


    Как перенаправить пользователя на другую страницу методами PHP или Ajax'а?

    Суть: скрипт получает данные, обрабатывает их и затем отправляет пользователя на другую страницу, передав ей данные методом POST.


    Вроде несложный вопрос, а додуматься не могу. cUrl не подходит, тк он оставляет пользователя на моем домене, а "другая страница" требует перехода на ее адрес.
     
  2. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    просто делаешь форму со скрытыми полями, а затем отправляешь ещё посредством js
    HTML:
    
    <form method="POST" id="my_form" action="/script.php">
    <input type="hidden" name="T1" value="xxxxx">
    <input type="hidden" name="T3" value="xxxxx">
    <input type="hidden" name="T2" value="xxxxx">
    </form>
    
    <script>
    // как только загрузится страница- отправимм её
    $(function(){
    $("#my_form").submit();
    });
    </script>
     
    Acden нравится это.
  3. Acden

    Acden

    Регистр.:
    12 янв 2008
    Сообщения:
    200
    Симпатии:
    12
    То есть я вначале скрипта php делаю нужную мне обработку переменных $_POST,
    затем кодом php формирую страницу
    <body>
    <форма>...
    </body>
    <script>
    здесь делаю сабмит на загрузку
    </script>


    И она сразу пошла перенаправляться?
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Ну, в целом да, хотя описано не так чтобы точно-
    просто ты отправляешь форму с пост данными (если особых параметров не задано, что нужно открывать обязательно в новом окне) то браузер направляет тебя и все данные в форме по адресу в action="/script.php". Тебе нужно просто сформировать все данные. с помощью формирования инпутов - <input type="hidden" name="T2" value="xxxxx"> Обрабатываться они будут там куда отправил
     
    Acden нравится это.
  5. Acden

    Acden

    Регистр.:
    12 янв 2008
    Сообщения:
    200
    Симпатии:
    12
    А страницу, заголовки (head), обязательно выводить?

    или достаточно будет блока <body> ?
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    да, лучше вывести. и про скрипты не забуть- я привёл пример на jquery. тебе же не надо его подключать из одной такой фичи. используй
    HTML:
    <body onload="document.getElementById('my_form').submit();">
     
    Acden нравится это.
  7. Acden

    Acden

    Регистр.:
    12 янв 2008
    Сообщения:
    200
    Симпатии:
    12
    Так, почти получилось, но нет автоперехода:

    PHP:
    echo "<body onload=\"document.getElementById('my_form').submit();\">";
    echo 
    "<form action='http://www.site.ru' method='post' name='my_form' id='my_form'>";
    echo 
    "<input type='text' name='param1' value='$val1'>";
    echo 
    "<input type='text' name='param2' value='$val2'>";
    echo 
    "<input type='submit' name='submit' value='Продолжить'>";
    echo 
    "</body>";

    Или вот выводится на страницу:
    HTML:
    
    <body onload="document.getElementById('my_form').submit();">
    <form action='http://www.site.ru' method='post' name='my_form' id='my_form'>
    
    <input type='text' name='param1' value='value1'>
    <input type='text' name='param2' value='value2='>
    <input type='submit' name='submit' value='Продолжить'>
    </body>


    Всё, победил! Нельзя было submit-у давать имя с зарезервированным словом (name=submit) :)
    ну и плюс форму закрыть. Head решил не делать – думаю что незачем он.

    Огромная благодарность KillDead, реально помог – уже второй день до 5 утра сижу, наконец, заработало. А то я всё через Ajax, cURL пытался – сервер не принимал такую переадресацию.
     
  8. AXP

    AXP Создатель

    Регистр.:
    16 мар 2007
    Сообщения:
    27
    Симпатии:
    2
    if (redirect) self.location = 'http://ya.ru';
    //javascript