问题描述
我看过一些类似的帖子,Facebook Like 自定义配置文件 URL PHP
但仍不清楚,实际方法/过程不可用..伙计们,多一点指导会起到很大的作用..
我想在这里提出问题:
用户应该有机会决定他们的 url 是什么,就像在 fb、twitter 的情况下一样例如:www.facebook.com/harry.inaction
为此我使用的是linux、apache、mysql、php环境.
根据用户加入时自动创建的用户 ID 识别用户
而且我在第一步就失败了,我真的不知道如何开始.
谢谢
推荐答案
不可能给出任何细节作为答案,因为你必须构建你的这个系统,还有更多不止一种方法.设计决策需要根据您想要的工作方式和您已经拥有的东西(它们必须以某种方式协同工作)来做出.
假设您已经有了一个用于创建用户的系统(听起来确实如此)并且您已经有了一个用于查看个人资料的系统.您需要扩展此系统,以便在数据库的用户表中存储一个额外的"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.
接下来,您需要能够使用该唯一名称并将其变回旧的丑陋的个人资料页面.这里需要做两件事:
- 您需要再次扩展您的 profile.php 以采用可选的虚名而不是 user_id
- 您需要使用 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]<小时>
这只是一个示例,说明如何实现这样的东西.它可能完全不适用于你所拥有的东西,但它应该让你知道你需要做什么.