2012-03-13 5 views
0

私はウェブサイトの管理バックエンドを作成したいと思っています。各管理者は、登録時に指定できる管理者用のフォルダに個人用のURLを持たせたいのですが、入力したフォルダ名はMySQLデータベース。「隠した」管理フォルダ、別のフォルダ名を使用していますか?

私は、ユーザーが入力したURLを読むことができる.htaccessファイルが好きで、それがデータベースのユーザーの「管理フォルダ」フィールドにある場合は、フォルダ名を書き換えます(この例では、これを 'admin'と呼ぶ)、ユーザーはデータベースから自分のURLを使うことができますが、/ adminにリダイレクトすることができます。例えば

...
ユーザー名 - フォルダ名
リチャード - .htaccessファイルは、その後、ユーザーにログインし、現在は名前をフォルダつかむ必要があります

myhiddenfolderまだ、およびロード/管理($_SESSION['folder_name']のようなものが設定しました)ブラウザーのアドレスバーにユーザーのフォルダー名を表示します。

編集
申し訳ありませんが、私の全体的な質問は、私はセッションVAR「フォルダ名」をつかむと「管理者」と呼ばれるフォルダを書き換えるために.htaccessファイルでそれを解析する方法、です。

+1

質問がありますか? :) –

+0

[何を試しましたか?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – j08691

+0

申し訳ありませんが、私の質問は、どうすれば$ _SESSION ['folder_name']と.htaccessファイルを解析しますか? –

答えて

1

技術的には、mod_rewriteまたは単にプレーンオールのシンボリックリンク(権限を持っている場合)のいずれかを使用することが可能です。

をmod_rewriteにすると、RewriteMap convinientが見つかります。しかし、RewriteMapsの宣言はディレクトリごとのContext(これは.htaccessファイルを含む)で行うことができないので、おそらくあなたが望むものではないhttpサーバの設定を変更する必要があります。

ユーザーがカスタムフォルダ名を変更するたびに、PHPスクリプト内から.htaccessを変更することはできます。

RewriteCond %{HTTP_COOKIE} (^|;|\s)custom_folder=custom/path(;|$) 
RewriteRule /custom/path /admin 

このようにするには、カスタムパスをクッキーとして設定する必要があります。悲しいことに、RewriteRuleテストのクッキー値を参照する方法はありません(私たちが望んでいないものに限られます)。

また、カスタムパスが実際のパスと競合しないようにして、対応するユーザーのサイトを切断するようにしてください。

シンボリックリンクの場合、ユーザーが自分の管理者フォルダ名を変更するたびに、彼のシンボリックリンクを作成/削除/更新します。もちろん、シンボリックリンクはグローバルであるため、adminスクリプトの管理者権限を確認する必要がありました。

あなたが選択した方法とは独立して、あなたの管理スクリプトで管理者特権を確認してください。

編集: 私の返事は少し早すぎる、編集された質問のあったので、それへの答えは次のようになります。それは、直接の.htaccess内からphpのセッションデータにアクセスすることはできません。あなたはprg: RewriteMapsで遊んでみることもできます。

+0

非常によく説明され、非常に役立ちます。ありがとうございました! :) –

関連する問題