Buduję metodę podszycia pewnego użytkownika na mojej stronie, podobnie jak Facebook teraz robi go na profilach z przyciskiem "Widok jako".

Celem jest, aby móc dołączyć identyfikator użytkownika osoby, którą chciałbym podszywać się do ciągu zapytania, tak jak: viewas=1234. Po widzeniu, strona pozwoliłaby mi (jako administrator), aby "podszywać się", który użytkownik.

Problem występuje jednak problem z przenoszeniem stanu "personifikacji" między ładunkami stron. Każdy link, który klikam, należy dostosować do przenoszenia viewas=1234.

Na przykład link, który zazwyczaj wyglądałby jak ten ...

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

... musiałby dynamicznie wiedzieć, żeby się odwrócić ...

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

... Ilekroć chciałbym podszychać przez użytkownika z ID 1234. I to musiałby się zdarzyć witrynę.

Jest najlepszym sposobem na jakoś zrobienie tego z JS po obciążeniu, z PHP po stronie serwera lub coś innego?

0
johnnietheblack 18 październik 2011, 20:48

3 odpowiedzi

Najlepsza odpowiedź

Nie jestem pewien, czy jest to odpowiedź, której szukasz, ale tutaj idzie. Niedawno musiałem wdrożyć podobny zestaw funkcjonalności. Poszedłem z przechowywania wartości "Viewas" w zmiennej sesji. W ten sposób nie ma potrzeby modyfikowania HTML, JavaScript itp. - Tylko twój kod (który już jesteś modyfikujący, aby obsługiwać ciąg zapytania) - w kodzie Sprawdź zamiast zmiennej sesji.

Następnie możesz nieubłasować tę zmienną, gdy administrator "loguje się" od podszycia.

1
Aleks G 18 październik 2011, 17:02

jQuery jest idealny dla tego rodzaju rzeczy; Utwórz selektor wszystkich tagów "A" i dołącz ciąg zapytania do właściwości HREF.

Na przykład,

$('a').each(function () {
  var href = $(this).attr('href');
  href += '?viewas=1234';
  $(this).attr('href',href);
});
2
Phil Lello 18 październik 2011, 16:57

Powinieneś wykryć, czy został ustawiony, jeśli tak, dołącz go do każdego linku.

Coś jak:

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

Oczywiście nie należy wykonać czeku dla każdego linku, ale uczynić go zmienną ustawioną. Wykonaj również pewne kontrole bezpieczeństwa, więc wiesz, że jest to ważne Viewas.

1
Rene Pot 18 październik 2011, 16:51