Как динамически построить строку запроса для каждой ссылки? - PullRequest
0 голосов
/ 18 октября 2011

Я создаю метод для олицетворения определенного пользователя на моем веб-сайте, аналогично тому, как Facebook теперь делает это в профилях с помощью кнопки «Просмотреть как».

Цель здесь - добавить в строку запроса идентификатор пользователя, которого я хотел бы выдать за себя, например: viewas=1234.Увидев это, сайт позволит мне (как администратору) «выдавать себя за» этого пользователя.

Однако проблема заключается в переносе состояния «олицетворения» между загрузками страниц.Каждая ссылка, на которую я нажимаю, должна быть отрегулирована так, чтобы она содержала viewas=1234.

Например, ссылка, которая обычно выглядит следующим образом ...

<a href='http://www.example.com/profile?profileid=5678'>My Profile</a>

...нужно было бы динамически знать, чтобы превратиться в ...

<a href='http://www.example.com/profile?profileid=5678&viewas=1234'>My Profile</a>

... всякий раз, когда я хотел бы выдать себя за пользователя с идентификатором 1234. И это должно было бы произойти во всем сайте.* Лучший способ сделать это с помощью JS после загрузки, с PHP на стороне сервера или что-то еще?

Ответы [ 3 ]

2 голосов
/ 18 октября 2011

jQuery идеально подходит для такого рода вещей;создайте селектор для всех тегов 'a' и добавьте строку запроса в свойство href.

Например,

$('a').each(function () {
  var href = $(this).attr('href');
  href += '?viewas=1234';
  $(this).attr('href',href);
});
1 голос
/ 18 октября 2011

Не уверен, что это ответ, который вы ищете, однако здесь он идет.Недавно мне пришлось реализовать подобный набор функций.Я пошел с сохранением значения "viewas" в переменной сессии.Таким образом, нет необходимости изменять HTML, javascript и т. Д. - только ваш код (который вы уже модифицировали для обработки строки запроса) - вместо этого проверьте в переменной сеанса.затем сбросьте эту переменную, когда администратор "выйдет" из олицетворения.

1 голос
/ 18 октября 2011

Вы должны определить, была ли она установлена, и если да, добавить ее для каждой ссылки.

Что-то вроде:

if (isset($_GET['viewas'])){
   $linkurl .= '&viewas='.$_GET['viewas'];
}

Конечно, вы не должны выполнять проверку для каждой ссылки., но сделайте его переменной набора.Также сделайте несколько проверок безопасности, чтобы вы точно знали, что это действительные представления.

...