За последние 24 часа нас посетили 22382 программиста и 1149 роботов. Сейчас ищут 646 программистов ...

Как сделать редирект с ?id

Тема в разделе "PHP для новичков", создана пользователем IGARRRRR, 12 июл 2019.

  1. IGARRRRR

    IGARRRRR Новичок

    С нами с:
    6 июл 2019
    Сообщения:
    21
    Симпатии:
    0
    --- Добавлено ---
    Вопрос закрыт, додумался, если кому поможет, тогда вот:

    echo'<meta http-equiv="refresh" content="0;"../historybrazec.php ?ID_OBRZ=<?= $ID_OBRZ?";>';
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это уродство, к тому же нестандартное. См. заголовок Location со статусами 3хх.
     
  3. IGARRRRR

    IGARRRRR Новичок

    С нами с:
    6 июл 2019
    Сообщения:
    21
    Симпатии:
    0
    хорошо, посмотрю, спасибо, я новичок в этом просто, полное дерево.
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    А зачем нужен такой редирект на своем сайте? Или просто старую адресацию корректируете?
     
  5. IGARRRRR

    IGARRRRR Новичок

    С нами с:
    6 июл 2019
    Сообщения:
    21
    Симпатии:
    0
    Это просто подготовка к экзамену по информатике. Там нужно сделать так, чтобы после отправки данных в базу, страница автоматически перезагружалась. P.S. я вообще не на программиста учусь, в дальнейшем мне это не понадобится. Поэтому мне без разницы красиво будет или нет. Главное как нибудь сделать и сдать этот зачет.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Тут однозначно серверный редирект (мой вариант). Достаточно 302 (header Location без доп. параметров). Все поп. браузеры делают его методом GET даже после POST-запроса.
     
  7. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @IGARRRRR она итак должна автоматически перезагрузиться если ты данные в базу отправляешь так:
    HTML:
    1. <form action="test.php">
    2.   <p><b>Как по вашему мнению расшифровывается аббревиатура &quot;ОС&quot;?</b></p>
    3.   <p><input type="radio" name="answer" value="a1">Офицерский состав<Br>
    4.   <input type="radio" name="answer" value="a2">Операционная система<Br>
    5.   <input type="radio" name="answer" value="a3">Большой полосатый мух</p>
    6.   <p><input type="submit"></p>
    7. </form>
    то есть вот эта кнопка перезагружает страницу
    HTML:
    1. <input type="submit">
     
  8. IGARRRRR

    IGARRRRR Новичок

    С нами с:
    6 июл 2019
    Сообщения:
    21
    Симпатии:
    0
    Хорошо, спасибо я попробую с Вашим вариантом разобраться. Спасибо за помощь и подсказку)
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Artur_hopf, никто так в реале не делает. Вон даже в колледже/вузе это понимают ;)
     
  10. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @IGARRRRR покажи как ты данные в базу записываешь.
     
  11. IGARRRRR

    IGARRRRR Новичок

    С нами с:
    6 июл 2019
    Сообщения:
    21
    Симпатии:
    0
    Но после этого, может последовать повторная отправка формы. Учитель сказал забить и сделать автоматическую перезагрузку страницы.
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @IGARRRRR, только не используйте в Location отн. адрес. На крайняк – /path (некоторые его тоже называют относительным, но это не совсем так).
    --- Добавлено ---
    P.S. И полноценный контент с этим заголовком выдавать не нужно. Обычно сразу после его выдачи делают просто exit ;)
     
  13. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miketomlin а чем проблема такой записи?

    PHP:
    1. <?php
    2.  
    3. if(isset($_GET['id'])){
    4.     $page = "test.php?id=".$_GET['id'];
    5. }else{
    6.     $page = "test.php";
    7. }
    8. header('Location:'.$page);
    9. ?>
     
  14. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Artur_hopf, не совсем понял последнее. Ты упрощаешь. Обычно данные изначально передаются методом POST и более сложные, чем кодовые значения чекбоксов. После этого нужен редирект методом GET.
     
  15. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @miketomlin ну пусть там посередке работа с бд, и в GET допустим какой то id из базы. Так же можно сделать? для @IGARRRRR не подойдет такой вариант что ли?
     
  16. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
  17. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    --- Добавлено ---
    @Sail Зачем мудрить то?? ему нужен id после редиректа. Я понимаю что я слоупок и давно аватарку надо поменять, но я не прав что ли?
     
  18. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Artur_hopf, просто прочти первый абзац :)
     
  19. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. A quick way to make redirects permanent or temporary is to make use of the $http_response_code parameter in header().
    2.  
    3. <?php
    4. // 301 Moved Permanently
    5. header("Location: /foo.php",TRUE,301);
    6.  
    7. // 302 Found
    8. header("Location: /foo.php",TRUE,302);
    9. header("Location: /foo.php");
    10.  
    11. // 303 See Other
    12. header("Location: /foo.php",TRUE,303);
    13.  
    14. // 307 Temporary Redirect
    15. header("Location: /foo.php",TRUE,307);
    16. ?>
    17.  
    18. The HTTP status code changes the way browsers and robots handle redirects, so if you are using header(Location:) it's a good idea to set the status code at the same time.  Browsers typically re-request a 307 page every time, cache a 302 page for the session, and cache a 301 page for longer, or even indefinitely.  Search engines typically transfer "page rank" to the new location for 301 redirects, but not for 302, 303 or 307. If the status code is not specified, header('Location:') defaults to 302.
     
  20. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    ТС, видимо, на момент обработки POST-запроса не имеет GET-параметра id. Т.е. классика, когда данные сливаются в обработчик по единому адресу, а уже потом идет редирект на страницу по id (при успешной вставке данных).
    --- Добавлено ---
    Тебе зачем вообще тут ветвление понадобилось? «Редирект на себя» можно проще организовать.