Реализация тщеславного URL для отдельных пользователей в PHP - PullRequest
0 голосов
/ 23 сентября 2010

Как можно было бы реализовать тщательный URL для каждого пользователя в PHP? Я внедряю систему входа в систему моего веб-приложения как доработанную версию системы входа Drax LLP.

Таким образом, каждый пользователь должен иметь возможность изменить свой профиль, который в конечном итоге появится на его персональном URL-адресе, например, xyz.com/user.

.

Какие-нибудь советы / идеи? Спасибо ..

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

Вот пример используемых файлов:

.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

index.php

<?php
function getWebPath() {
    $location = "";

    // Read the relative URL into an array
    if(isset($_SERVER['HTTP_X_REWRITE_URL'])) { // IIS Rewrite
        $location = $_SERVER['HTTP_X_REWRITE_URL'];
    } elseif(isset($_SERVER['REQUEST_URI'])) { // Apache
        $location = $_SERVER['REQUEST_URI'];
    } elseif(isset($_SERVER['REDIRECT_URL'])) { // Apache mod_rewrite (breaks on CGI)
        $location = $_SERVER['REDIRECT_URL'];
    } elseif(isset($_SERVER['ORIG_PATH_INFO'])) { // IIS + CGI
        $location = $_SERVER['ORIG_PATH_INFO'];
    }

    return $location;
}

$location = getWebPath();

print_r($location);

Функция выше должна где-то стать методом в вашем классе фронт-контроллера.Вам просто нужно вычесть ваш базовый путь из $ location, чтобы вы остались с виртуальным путем.Затем вы можете делать все, что захотите - например, просто разделить на '/', а затем пройтись по пути, передавая каждый остаток следующему контроллеру в зависимости от URI.Вы также можете написать более сложные правила маршрутизации, используя регулярные выражения (что делает Django и многие другие фреймворки).

Например: / profile / hardik988

Будет передан ответственному контроллеруиз «профилей», который затем решает, что делать с оставшейся частью пути.Скорее всего, он найдет имя пользователя и отобразит соответствующий шаблон.

0 голосов
/ 23 сентября 2010

Это относительно просто: у вас есть правило mod_rewrite для сопоставления запросов к www.domain.com/username с чем-то вроде www.domain.com/users/username.

Однако вам необходимо знать, что запрещать быть именем пользователя,как я полагаю, у вас будут другие страницы верхнего уровня, такие как www.domain.com/about или www.domain.com/terms.Поэтому вы не хотите, чтобы люди регистрировали about и terms в качестве имен пользователей.

...