このシステムを構築する必要があり、それを行う方法は複数あるため、詳細を答えとして提示することは不可能になります。設計上の決定は、物事を機能させたい方法と、すでに持っているものに基づいて行う必要があります(何らかの方法で連携する必要があります)。
ユーザーを作成するためのシステムがすでにあり(そしてあなたがそうしているように聞こえます)、プロファイルを表示するためのシステムがすでにあるとします。このシステムを拡張して、データベースのユーザーテーブルに追加の「my_vanity_url」フィールドを格納する必要があります。このフィールドは一意である必要があります。ユーザーがプロファイルを編集するとき、これを好きなように変更するオプションがあります(簡単にするために文字と数字とダッシュのみに制限します)。
次に、このプロファイルを表示するとき、たとえば経由/profile.php
である場合、コードはいくつかのことをチェックする必要があります。
- まず、それがどのように呼び出されているかを確認する必要があり
$_SERVER['REQUEST_URI']
ます。/user/some-vanity-name
/profile.php?u=1234
- 後者の場合は、ブラウザをリダイレクトし、データベースルックアップを実行して、user_idを持つユーザーが誰であるかを確認する必要があります
1234
。
- このユーザーのデータベースから「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つのことが起こる必要があります。
profile.php
user_idではなく、オプションのバニティ名を使用するには、もう一度拡張する必要があります
- バニティ名を内部的にルーティングするには、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]
これは、このようなものを実装する方法の単なる例です。それはあなたが持っているものには完全に適用できないかもしれませんが、それはあなたが何をする必要があるかについての考えをあなたに与えるはずです。