0

Facebook のようなカスタム プロファイル URL PHPのような投稿をいくつか見てきました。

カスタム URL / Apache URL 書き換え

しかし、それはまだ明確ではなく、実際の方法/プロセスは利用できません..皆さん、もう少しガイダンスがあれば、多くのことができます..

ここで質問を提起したいと思います。

  1. ユーザーは、自分の URL を決定する機会を持つ必要があります。たとえば、fb や twitter の場合と同様に: www.facebook.com/harry.inaction

  2. これには、linux、apache、mysql、php 環境を使用しています。

  3. ユーザーは、参加時に自動的に作成されるユーザー ID に基づいて識別されます

そして、私は最初のステップで失敗します。真剣に始めてください。

ありがとう

4

1 に答える 1

1

このシステムを構築する必要があり、それを行う方法は複数あるため、詳細を答えとして提示することは不可能になります。設計上の決定は、物事を機能させたい方法と、すでに持っているものに基づいて行う必要があります(何らかの方法で連携する必要があります)。

ユーザーを作成するためのシステムがすでにあり(そしてあなたがそうしているように聞こえます)、プロファイルを表示するためのシステムがすでにあるとします。このシステムを拡張して、データベースのユーザーテーブルに追加の「my_vanity_url」フィールドを格納する必要があります。このフィールドは一意である必要があります。ユーザーがプロファイルを編集するとき、これを好きなように変更するオプションがあります(簡単にするために文字と数字とダッシュのみに制限します)。

次に、このプロファイルを表示するとき、たとえば経由/profile.phpである場合、コードはいくつかのことをチェックする必要があります。

  1. まず、それがどのように呼び出されているかを確認する必要があり$_SERVER['REQUEST_URI']ます。/user/some-vanity-name/profile.php?u=1234
  2. 後者の場合は、ブラウザをリダイレクトし、データベースルックアップを実行して、user_idを持つユーザーが誰であるかを確認する必要があります1234
  3. このユーザーのデータベースから「my_vanity_url」列を引き出し、ブラウザをにリダイレクトします(その列の値に/user/my_vanity_url_value置き換えmy_vanity_url_valueます)。

したがって、http://your.domain.com/profile.php?u = 1234にアクセスすると、ブラウザがリダイレクトされ、URLアドレスバーにhttp://your.domian.com/user/my_nameと表示されます。

次に、その一意の名前を取得して、古い見苦しいプロファイルページに戻すことができる必要があります。ここで2つのことが起こる必要があります。

  1. profile.phpuser_idではなく、オプションのバニティ名を使用するには、もう一度拡張する必要があります
  2. バニティ名を内部的にルーティングするには、mod_rewriteを使用する必要があります/profile.php

まず$_GET[]、user_idのパラメーターではなく、別のパラメーターを探すだけです。と呼ばれるとしましょうname:それで$_GET['name']、それが存在するかどうかを見て、バニティURL名がであるユーザーテーブルでユーザーを検索するかどうかを確認します$_GET['name']。そのユーザーのプロファイルを返します。

2つ目は、これをドキュメントルートのhtaccessファイルの適切な場所に配置する必要があります。

RewriteEngine On
RewriteRule ^/?user/([A-Za-z0-9-]+)/?$ /profile.php?name=$1 [L]

これは、このようなものを実装する方法の単なる例です。それはあなたが持っているものには完全に適用できないかもしれませんが、それはあなたが何をする必要があるかについての考えをあなたに与えるはずです。

于 2012-10-04T18:29:01.243 に答える