0

facebook などの Web サイトでは、www.facebook.com/username などの URL が表示されます。このような URL は、MySQL データベースからユーザー情報を実際にどのようにロードするのでしょうか? それが表示されている実際のファイルは何ですか?参照している各ユーザーのフォルダーは実際には存在しないと思います。私の質問が意味をなさない場合は、PHP を介してこのようなものを設定するために、少なくとも正しい方向に私を向けることができますか?

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

4

3 に答える 3

0

apacheの.htaccessファイルを使用してRewriteEngineを管理することにより、すべてのページをindex.phpファイルに集めることができます。要求されたページが実際にはWebページのデフォルト部分になることを意図したページではないことを確認した後、以下のコードにフォールバックしてユーザーアカウントを見つけることができます。ユーザーアカウントが検出されない場合は、アクセスされているページが単に404である可能性が高く、キャッチオールシナリオとしてリダイレクトできます。

.htaccessファイル

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

要求されたページを確認した後に実行するphpロジックは、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");
    }
}
于 2012-05-04T03:17:09.760 に答える
0

しようとする

print_r($_SERVER);

そのパラメータを取得します。次に、それらを分割するだけです。何かのようなもの

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

だから、$directoryクエリに入れます

于 2012-05-04T03:08:24.310 に答える
0

データベースを介してすべて動的にロードされます。たとえば、私の Facebook 名は「benroux」です。Facebook のユーザー テーブルには、たとえばニックネームと呼ばれる一意の列があります。私が Facebook にアクセスすると、彼らはパス情報を解析し、基本的に次の形式でクエリを呼び出しています。

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

さて、これは非常に単純化された例ですが、ここで何が起こっているかを理解していただければ幸いです。重要なのは、2 種類の URL 変数、facebook.com/pagename.php?id=blahおよび安静なスタイル パス情報変数があることです。facebook.com/pagename/var1/var2/

ユーザーページをexample.com/benrouxロードしたい場合は、index.php (私は PHP を使用します) にパス情報 ( http://php.net/manual/en/function.pathinfo.php ) をロードさせる必要があります。次に、上で説明したようにデータベースにクエリを実行します。

于 2012-05-04T03:02:54.403 に答える