自动为新站点用户创建自定义页面(或URL) - PHP

时间:2014-04-24 17:25:07

标签: php mysql .htaccess web-applications social-networking

我的网站最基本的形式是针对特定类型个人的网站。当一个人注册时,我想创建一个显示其个人资料的自定义页面(或至少是一个图像/外观)。目前,我使用PHP $_GET参数来确定当用户导航到网站上相应脚本时要显示的配置文件。

为了更好的搜索引擎优化,我希望每个用户都有自己独特的链接;例如,FaceBook允许其用户拥有可以链接的自定义URL。如何在每个注册的新用户的目录中自动生成一个页面,并在用户更新他/她的详细信息时自动更新该页面?我知道.htaccess可能有一个潜在的进程,使用用户的名称/标题/等从数据库中提取他们的详细信息,但将其显示为唯一的URL。

任何人都可以提供此实施的建议或示例吗?我感谢任何帮助!

P.S。我想,一旦上述功能被整理出来,基于用户位置(即通过状态)对文件进行排序应该不那么困难。理想情况下,我喜欢这样的目录结构../users/state/user_name,其中state是用户的位置,user_name是它们的唯一名称。再次感谢!

2 个答案:

答案 0 :(得分:1)

apache的.htaccess几乎没有工作 - 大部分逻辑都在php本身。 Apache只是将每个请求重定向到选定的脚本文件。

我假设您使用apache wid mod_rewrite。如果是这种情况,您应该将其添加到.htaccess文件中:

# check if mod_rewrite is present
<IfModule mod_rewrite.c>
  #turns it on
  RewriteEngine on

  #if the requested url isn't a file or a dir
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d

  #process index.php, no matter what was in the url
  RewriteRule ^ index.php [L]
</IfModule>

(请注意.htaccess还必须具有覆盖apache当前设置的权限)

在index.php中,你可以查看被查询的URL并处理信息

$whatTheUserRequested=$_SERVER['REQUEST_URI'];
$parameterArray=explode('/', $whatTheUserRequested);

//check the first param.
switch($parameterArray[1])
{
  //if it was something like "thesite.com/main/fsadf/hgfdsgsdf/...."
  case "main":
    include "mainPage.php";
    //....or do something else
    break;

  //if it was something like "thesite.com/login/asdfe/xxxx/...."
  case "login":
    include "loginPage.php";
    //....or do something else
    break;

  default:
    //here you MUST check if $parameterArray[1] is a username
    if(check in db if $parameterArray[1] is user)
    {
      include "userPage.php";
    }
    else
    {
      include "pageNotFound.html"
    };
}

您也可以查看附带的php中的第3或第4个参数,以处理网址,例如“mysite.com/johnny95/edit”

答案 1 :(得分:0)

您可以根据您希望的任何逻辑生成唯一网址。使用.htaccess重定向发送可在数据库中查询的参数。您可以找到有关here的信息。我会远离基于状态的目录结构 - 人们移动和移动目录似乎不值得努力。为简单起见,请保持平面目录结构

如果你看一下这篇文章的网址:questions / 23275736 / automated-create-custom-page-or-url-for-new-site-user-php,它们包括“问题”(可能是数据库表),“ 23275736“(可能是表键ID)和用户友好的字符串。我不确定,但我怀疑他们使用类似于附加链接的方法重定向.htaccess。

您还可以查看this post's answer以获取另一个使用斜杠重定向的示例。