2012-05-04 2 views
0

Facebookや他の多くのウェブサイトでは、www.facebook.com/usernameなどのURLが表示されます。このようなURLは、実際にMySQLデータベースからユーザー情報をどのようにロードしますか?それが表示されている実際のファイルは何ですか?私は実際にはそれが参照している各ユーザーのためのフォルダがないと仮定します。私の質問が理にかなっていない場合は、少なくともPHPを介してこれを設定する正しい方向に私を指摘することはできますか?ディレクトリのみで特定のクエリをページにロードできますか?

また、example.com/usernameにユーザープロファイルを読み込ませます。これはどのように作動しますか?

答えて

0

$directoryを入れて、あなたのすべてのページは、index.phpファイルを通じて注ぎ込ますることができます。リクエストされたページが実際にあなたのウェブページのデフォルト部分を意図したページではないことを確認した後、以下のコードに戻ってユーザアカウントを発見することができます。ユーザーアカウントが発見されていない場合は、可能性はアクセスされているページでは、その後、キャッチオールシナリオとして

.htaccessファイル

RewriteEngine on 
RewriteBase/
RewriteRule !\.(xml|js|ico|gif|jpg|png|css|swf|php|txt|html|otf)$ index.php 

PHPのロジックにリダイレクト可能性があり、単純に404であるということです要求されたページを確認した後に実行するには、contact-usページのようなものでも、エンドユーザーがアクセスしようとしている典型的なWebページでもない。

if(preg_match("/^\/(?P<username>[^\/]*)/", $_SERVER['REDIRECT_URL'], $matches)) { 
    $result = mysql_query("SELECT * FROM users WHERE username = '" . mysql_real_escape_string($matches['username']) . "'"); 

    if($user_record = mysql_fetch_row($result)) { 
     echo "DO WHATEVER YOUR HEART CONTENTS HERE :)"; 
    } else { 
     header("Location: error-404.php"); 
    } 
} 
+0

これは非常に便利でした。ありがとうございました。私は.htaccessを使って可能なことがたくさんあるようです。間違いなくそれについて学ぶのにもっと時間を費やす必要があります。 – Mitch

0

すべてがデータベースを介して動的にロードされます。たとえば、私のFacebookの名前は "benroux"です。 Facebookのユーザーテーブルには、ニックネームというユニークな列があります。私はFacebookを利用して訪問するとき、彼らはパス情報を解析し、基本的にフォームでクエリを呼び出している:

select * from user where nickname = "{$nickName}" 

は今、これはオーバー簡略化した例であるが、私はそれがあなたにここで何が起こっているかのアイデアを与える願っています。鍵はそこのURL VARSの2種類、facebook.com/pagename.php?id=blahがあり、あなたがexample.com/benrouxが私のユーザーページをロード持って探している場合は安らかなスタイルのパス情報がfacebook.com/pagename/var1/var2/

をvarsの、あなたのindex.phpを(I'LLをする必要があるということですPHPを使用する)パス情報(http://php.net/manual/en/function.pathinfo.php)をロードして、上記のようにデータベースに問い合わせます。

+0

ありがとうございます、これは私にとっては完全には解決しませんが、間違いなく正しいパスに設定されています。私はpathinfo関数を詳しく見て、これを取り除くことができるかどうかを見ていきます。私は既にユーザーとプロフィールページなどで自分のデータベースをセットアップしています。もっとフレンドリーなURLを使ってプロファイルにそれらのプロファイルを導きたいだけです。 – Mitch

0

あなたはパラメータということでしょう

print_r($_SERVER); 

にしてみてください。次に、それらを分割するだけです。

$directory = $_SERVER['REQUEST_URI'].split('/')[1]; 

よう 何かがそう、RewriteEngineを管理するために、Apacheの.htaccessファイルを使用することにより、クエリ

関連する問題