2011-10-18 8 views
0

私は自分のウェブサイトで特定のユーザーを偽装するための方法を構築しています。リンクごとにクエリ文字列を動的に作成するにはどうすればよいですか?

ここでの目標は、尋ねる文字列に偽装したい人のユーザーIDを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> 

を持っているでしょう...いつでも私はID 1234でユーザーを偽装したいと思います。これはサイト全体で発生する必要があります。

ロード後、サーバー側でPHPを使用するなど、何とかJSでこれを行うにはどうすればよいでしょうか?

+1

すでに存在するクエリ文字列も処理する必要がありますか? – pimvdb

+0

はい...私は例との間で更新します...良い質問:) – johnnietheblack

+0

ビルドリンクの多くの例を見てくださいhttp://php.net/manual/en/function.http-build-query.php –

答えて

1

これはあなたが探しているはずだ答えがあるかどうかわからないが、しかし、ここでは行きます。私は最近、同様の機能を実装する必要がありました。私はセッション変数に "viewas"の値を格納することに行きました。この方法では、HTML、JavaScriptなどを変更する必要はありません。コードでは(すでに問合せ文字列を処理するために変更している)コードのみが、コード内でセッション変数をチェックします。

管理者が偽装からログアウトすると、この変数の設定を解除することができます。

+0

これは悪いオプションでもありません。私は偽装状態を管理するために、ページの上部にツールバーを追加することができます – johnnietheblack

1

設定されている場合は、リンクごとに追加する必要があります。以下のような

何か:

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

はもちろん、あなたがすべてのリンクのチェックを行いますが、それセット変数にするべきではありません。また、いくつかのセキュリティチェックを行って、有効なビューアであることを確認します。

+0

それは調整が必要なページに多くのリンクがあるまでは理にかなっているように思えます。単にこれを関数または何かとしてパッケージングすることをお勧めしますか? – johnnietheblack

2

jQueryは、このようなことには理想的です。すべての 'a'タグのセレクタを作成し、クエリ文字列をhrefプロパティに追加します。例えば

$('a').each(function() { 
    var href = $(this).attr('href'); 
    href += '?viewas=1234'; 
    $(this).attr('href',href); 
}); 
+0

は意味があります... URLに既にGET値があるかもしれないので、私は思っていますが、若干関わっていなければなりません... – johnnietheblack

関連する問題