За последние 24 часа нас посетили 17154 программиста и 1222 робота. Сейчас ищут 1526 программистов ...

Header("Location: ".$_SERVER["HTTP_REFERER"]);

Тема в разделе "PHP для новичков", создана пользователем Terminator004, 10 янв 2018.

  1. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Есть такой код. Тут когда нажимаешь на кнопку, так с формы вся инфо в дб идет. Ну и когда записалась в дб, страница должна перезагрузить ну или тот реридект и должно посля этого быть надпись echo "Записалось"; Но у меня нет этой записи, потому что, почему-то он перезагружает сайт с этим echo и крч ничего не выходит, как можно это сделать?
    PHP:
    1. <?php
    2. $login = $_SESSION['login'];
    3. $subject = $_POST['subject'];
    4. $text = $_POST['message'];
    5. if (isset($_POST['submit'])){
    6. mysql_query("INSERT INTO `vopros` (`author`, `subject`, `text`) VALUES ('$login', '$subject', '$text')");
    7. header("Location: ".$_SERVER["HTTP_REFERER"]);
    8. echo "Записалось";
    9. }
    10. ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.859
    Симпатии:
    749
    Адрес:
    Татарстан
    ну и не будет...
    header перенаправляет на указанный адрес, все что находится за ним не будет видно.
     
  3. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    так как сделать чтоб когда перенаправит будет виден тогд echo
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    Например, после вставки записи получить её id, записать его в сессию. И после этого: header(); exit;
    И добавить, например, альтернативную ветку: elseif("есть записанный id в сессии") { /* удалить запись в сессии об id и вывести сообщение об успехе...*/}
     
  5. Terminator004

    Terminator004 Новичок

    С нами с:
    1 дек 2016
    Сообщения:
    195
    Симпатии:
    1
    Напиши код если можешь, не очень понятно ))
     
  6. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Чаще встречается такой подход, header перенаправляет на отдельно взятую страницу, где выводят header, footer и тело страницы всего лишь с сообщением в $_SESSION['messaga'] - что мол вот вы там наделали, у нас тут заработало обработалось и вот собственно и все, перейдите по ссылке на главную или вас выкинет к чертям собачьим через 10 секунд.
    а код там простой, на javascripte куча готовых решений в тырнете есть, там 2 строчки.
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    А жабаскрипт здесь зачем? Чтоб автоматом переходило на главную, можно meta-ми обойтись
     
  8. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    наверное для экономии работы сервера, нужно же сообщить что операция прошла успешно перед редиректом, хотя можно сделать задержку хедера в несколько секунд чтобы увидеть то сообщение
     
  9. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    Об этом сообщают после редиректа, не перед, мы редиректим на страницу с этим сообщением. А чтоб с неё перейти на другую, можно воспользоваться <meta http-equiv="refresh" content="seconds;URL-to-redirect">
     
    karmay нравится это.
  10. karmay

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

    С нами с:
    9 ноя 2017
    Сообщения:
    180
    Симпатии:
    18
    Адрес:
    Н.Новгород
    Ух ты, работает, какая интересная плюха, а я и думать не знал что html так умеет, спасибо.