Передача переменных из строки и их стерание

Тема в разделе "Как сделать...", создана пользователем SERIAL, 4 сен 2012.

  1. SERIAL

    SERIAL Админ

    Регистр.:
    5 апр 2006
    Сообщения:
    566
    Симпатии:
    144
    В админке реализована функция мульти-добавления постов. Т.е. я выбрал нужные новости чекбоксом, все они получили id в адресной строке вида file.php?page=1&id=1&id=2&id=3&id=4&id=5
    При заходе по этой ссылке в браузере открывается для редактирования новость с id=5. Все гуд, тк и должно быть.
    Дальше когда я нажал на кнопку "Добавить новость" мне надо чтобы при обновлении страницы в адресной строке был адрес такой: file.php?page=1&id=1&id=2&id=3&id=4 чтобы я смог отредактировать 4-ю новость.

    Как это можно реализовать? Заранее спасибо!
     
  2. HatoL

    HatoL

    Регистр.:
    5 фев 2008
    Сообщения:
    206
    Симпатии:
    36
    Тебе алгоритм или сразу решение? Вообще надо повесить JS-обработчик на кнопку "Добавить новость", в котором будет браться адресная строка, удаляться в ней все после последнего амперсанда и перенаправлять на полученный адрес. Можно и на PHP, но тогда надо будет:

    1. Лезть в серверную админскую часть, что не есть хорошо
    2. Либо добавлять на страницу скрытые инпуты, либо каким-то образом выяснять текст адресной строки (в PHP наверное есть встроенные переменные, но вряд ли она платформо-независимые)

    Первый пункт плох тем, что можно нечаянно "сломать" безопасность. Со вторым, в случае инпутов, много мороки. С адресной строкой кстати тоже. В $_GET залезть не получится — у тебя все переменные имеют одно и то же название и поэтому затирают друг друга. С JS гораздо проще. Помнил бы я функции для работы со строками в JS, написал бы щас строчки.
     
  3. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.518
    Симпатии:
    1.368
    Лучше бы это было конечно в куки писать или сессии.

    Но если принципиально делать именно в таком формате, тебе помогут $_SERVER["QUERY_STRING"], Перейти по ссылке