0

我看过一些类似的帖子, Facebook Like Custom Profile 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”字段。该字段必须是唯一的。当用户编辑他们的个人资料时,他们可以选择将其更改为他们想要的任何内容(为简单起见,将其限制为仅字母和数字以及破折号)。

接下来,当您显示此配置文件时,假设它是 via /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

接下来,您需要能够使用该唯一名称并将其变回旧的丑陋的个人资料页面。这里需要做两件事:

  1. 您需要再次扩展您profile.php以采用可选的虚荣名称而不是 user_id
  2. 您需要使用 mod_rewrite 在内部将虚名路由到/profile.php

首先,您只需寻找不同的$_GET[]参数,而不是寻找 user_id 的任何参数。说它被称为name:所以看看$_GET['name']它是否存在,如果它确实在用户表中查找其虚 url 名称为的用户$_GET['name']。返回该用户的个人资料。

对于第二件事,您只需将其放在文档根目录中的 htaccess 文件中的适当位置:

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

这只是如何实现这样的事情的一个例子。它可能完全不适用于您拥有的东西,但它应该让您了解您需要做什么。

于 2012-10-04T18:29:01.243 回答