我遇到以下问题:

我们的会员希望直接从我们的主域中以http://www.example.com/membername的形式创建个性化网站。我正在以两种方式研究可能的解决方案,但都不是理想的(将在下面进行解释)。

方法1-?Member=

通过这种方法,我只需创建一个自定义URL并将信息存储在成员的数据库配置文件中。例如:如果我希望我的“自定义” URL为jm4,那么要让消费者访问我的网站,他们必须输入http://www.example.com?Member=jm4

该站点当然会执行$_GET['Member']来查找成员信息,将主要数据从索引页面存储在Session中,然后重定向到主页。消费者不再在URL中看到成员名称,而是看到www.example.com的所有页面名称,就好像他们只是访问父域开始一样(但是每个成员页面都有自定义信息)。

尽管此方法有效,但存在以下问题:


该URL远不及/jm4
以及输入错误时
通配符?Members=将导致
页面错误。而且,这种方法
该特定成员的信息
会话中(这是必需的
在页面上浏览
特定成员域)和
防止有人简单输入
http://www.example.com?Member=name2
无需清理即可访问另一个站点
他们的会话或关闭浏览器。


方法2-/membername

虽然首选方法(目前我们唯一知道的创建方法)是在子文件夹中手动生成索引文件,然后重定向到主索引,然后允许消费者查看成员的个人站点。

例如,如果我访问www.example.com/jm4,则指向包含index.php的/jm4文件夹。该文件中仅包含:

<?php
session_start();
ob_start();

$_SESSION['AgentNumber'] = "779562";
header("Location: ../index.php");
exit;
?>


主索引通过以下方式识别此问题:

<?php
session_start();
ob_start();

if ($_SESSION['MemberNumber'] == NULL) {
     header("Location:ac/");
     exit;
}

$conn = mysql_connect("localhost", "USER", "PW");
mysql_select_db("DB",$conn);

$sql = "SELECT * FROM table WHERE MemberNumber = $_SESSION[MemberNumber]";
$result = mysql_query($sql, $conn) or die(mysql_error());
while ($newArray = mysql_fetch_array($result)) {
    $_SESSION['MemberName'] = $newArray['MemberName'];
    $_SESSION['MemberPhone'] = $newArray['MemberPhone'];
    $_SESSION['MemberMobile'] = $newArray['MemberMobile'];
    $_SESSION['MemberFax'] = $newArray['MemberFax'];
    $_SESSION['MemberEmail'] = $newArray['MemberEmail'];
    $_SESSION['MemberAddress'] = $newArray['MemberAddress'];
    $_SESSION['MemberCity'] = $newArray['MemberCity'];
    $_SESSION['MemberState'] = $newArray['MemberState'];
    $_SESSION['MemberZip'] = $newArray['MemberZip'];
    $_SESSION['MemberAltName'] = $newArray['MemberAltName'];
}
mysql_close($conn);
header("Location: home/");
exit;
?>


对于成员,我们当然希望使用第二种方法来简化成员的操作,但会遇到以下问题:


我们被迫手动创建一个
子文件夹和唯一的index.php文件
对于我们加入的每个新成员
虽然以上可能是
自动(新成员创建时
配置文件,自动生成php
文件和文件夹),但更多
复杂,我们不想
在主数据库上有3000个子文件夹
域。


有人遇到过类似的问题吗?如果是这样,您如何解决呢?根据以上我的详细信息,您会推荐什么?任何建议表示赞赏。

另外-首选不要用作子域(membername.example.com),因为我们当前的SSL不允许使用通配符。

编辑1-现有的.HTACCESS文件
我在网站上现有的.htaccess文件看起来像这样供参考:

ErrorDocument 404 /404.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteRule ^(.*)$ /?Member=$1 [L]

最佳答案

您可以通过在根目录的.htaccess中添加一些行来执行首选方法:
This site should get you started
this one

关于php - 创建“自定义”用户URL时出现问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3549468/

10-10 21:45
查看更多