2009-07-25 17 views
8

ユーザープロファイルシステムを作成する際に助けが必要です。私はFacebookやMyspaceのようになります。アドレスのあとにはユーザ名だけがあり、疑問符もなく、例えばwww.mysite.com/usernameのようになります。私はすべての登録、ロギングスクリプトなどをすべて持っていますが、上記の "/ username"というURLの例を使ってプロファイルに行くにはどうしたらいいですか?PHPとMySQLを使用してユーザープロファイルを作成する方法

答えて

6

最初のディレクトリを取って$ _GETパラメータとして渡したmodリライトを作成する必要があります。

これを試してみてください:? '/' としてindex.phpをユーザー=ディレクトリ

+0

これは複雑ですか? – Spyderfusion02

+0

実際はかなり簡単です。それをルートディレクトリの.htaccessに入れてください。 –

+0

私は正しいルールを取得しようとしています。私に秒をください。 –

2

後に何かを書き換える必要があります

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^(.*)/$ index.php?user=$1 

rewrite engineを見てみましょう。いくつかのフレームワークには、Zend Frameworkのようにこのジョブを実行するクラスがあります。Zend_Routerがあります。これを自分で使うこともできますし、他のフレームワークも同様です。好みのフレーバーをドキュメントで確認してください。

4

ここに私の答えの要約版は、誰もtldrモーメントの場合には、です:

  1. は、「ユーザー」という名前のディレクトリを作成します。ユーザーに行われていない括弧内の任意の拡張のための

    REQUEST_URIRewriteEngine on

    RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/users/index.php'REQUEST_URI

これで、すべてのページリクエスト:そのディレクトリ内

  • 、次のmod_rewriteで.htaccessファイルを作成しますディレクトリはindex.phpに行きます

    index.phpは、ユーザが入力したURLを取り、終わり。これを行う方法のトンがありますが、ここでは常にユーザー名となりますが、最後の部分を知っている場合に簡単です、多分、ユーザ名/写真が/い​​ない:

    $url_request = $_SERVER['REQUEST_URI']; //Returns path requested, like "https://stackoverflow.com/users/foo/" 
    $user_request = str_replace("https://stackoverflow.com/users/", "", $url_request); //this leaves only 'foo/' 
    $user_name = str_replace("/", "", $user_request); //this leaves 'foo' 
    

    は今、ちょうどにクエリを行いますそのユーザー名のDB。存在する場合、index.phpは、スクリプトがリダイレクトされていない場合はプロファイルを出力します。/users/404.php

    しかし、ユーザが存在する場合、すべてのユーザは

    www.example.org/users/foo/ 
    

    fooのユーザーページにアクセスしました。

    ハッカーが悪用する変数を取得できません。別のブログや名刺のURLに簡単に挿入できます。


    実際には、「?」を取り除くことは可能です。素敵なシンプルなwww.example.org/users/someusernameがあります。

    これはTill Quackの記事「How to Succeed with URLs」のA List Apartにあることを知りました。

    Apache、.htaccess、mod_rewriteについて理解する必要があります。この方法では、セキュリティ上のリスクを理解し、それを考慮する必要があります。

    "users"という名前のディレクトリを作成します(そうする必要はありませんが、これはすべてを簡略化します)。そのディレクトリに.htaccessファイルを置きます。このファイルには、 「特定の種類でないファイルやディレクトリの要求(images、pdfs)はすべて、このスクリプトに送信する必要があります。このスクリプトは、ユーザーの送信先を処理します」記事からのmod_rewriteのは次のようになります。私の例では

    RewriteEngine on 
    RewriteRule !\.(gif|jpg|png|css)$ /your_web_root/index.php 
    

    それは、より簡単です理由があるため、代わりにこのスクリプトのあなたのすべての要求を処理している、「/your_web_root/users/index.php」になりますページでは、ユーザーディレクトリ内のものを扱うだけです。

    次に、「大丈夫、URLは何ですか?」というPHPスクリプトがあります。基本的に最後の後続のスラッシュ(または最後に別のものがある場合は2つ)の後にその部分をつかみ、SANITIZESはそれを見つけます(これは本当に重要です)。そうであればリクエスタはユーザーのプロフィールに送信しますが、かなりのURL(1秒で取得します)になっていない場合は、「ユーザーが見つかりません」ページなどに送信します。

    あなたのユーザーが見つかった場合は、PHPスクリプトによってユーザープロファイルが出力されます(再度、墨塗りをしてください)。プロファイルを表示するブラウザがそのコードを実行することを知っている)。

    www.example.org/users/example_user 
    

    、あなたが代わりにリダイレクトのmod_rewriteのを使用しているので、URLは同じままで、.htaccessファイルを引き上げるというスクリプトは、単にユーザープロファイルをダンプします:要求されたページがあったため。訪問者に、彼らはちょうどそれらが上記のURLに入れているのを見て、ユーザープロフィールが現れました。

    「user_not_found」ページを出力するのではなく、「user not found」ページにリダイレクトするかどうかを確認するPHPスクリプトも必要です。これは、そうで置く誰もされています

    www.example.org/users/blabhaboehbohe 
    

    ではなくURLが同じまま見ての

    www.example.org/users/notfound/ 
    

    へのURLの変更が表示されます。ハッカーが、URLが変更されないことを確認した場合、mod_rewriteを使用していることが分かり、実際の出力を処理するスクリプトが必要になります。彼らがそれを知っていれば、彼らはあなたが開いたままになっている可能性があるすべてのセキュリティホールを探して狂って行くことができます。

    歓声。

  • 関連する問題