Как добавить пользовательское значение в текущий URL - PullRequest
0 голосов
/ 31 января 2012

Я использую CMS (elgg: http://www.elgg.org), работающую с представлением, эквивалентным теме / шаблону. Чтобы изменить тему, я должен вставить в URL термин? View = mytheme, например:

http://www.mydomain.com/index.php?view=mytheme

Если я не добавлю? View = mytheme, elgg выберет вид по умолчанию

Итак, мне нужна помощь, для конкретных пользователей, я хочу перенаправить нас в пользовательское представление и не могу видеть представление по умолчанию.

Я делаю это в своем заголовке:

<?php 

  if ((string) $_SESSION['user']->type === '2') {
    // ???
  } else {
    echo 'do nothing';
  }

Я не знаю, как взять текущий URL, и просто добавить? View = mytheme в конце?

Когда пользователь имеет тип «2» и видит URL-адрес http://www.mydomain.com/index.php это должно быть вперед до> http://www.mydomain.com/index.php?view=mytheme

Спасибо.

1 Ответ

1 голос
/ 31 января 2012

Это немного грязно, но вы могли бы:

// Stole this from here: http://webcheatsheet.com/php/get_current_page_url.php
function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}

$useCustomView = ((string)$_SESSION['user']->type) === '2';
$usingCustomView = isset($_GET["view"]);
// Redirect to custom view if user type is 2 and view is not already set
if ($useCustomView && !$usingCustomView) {
        $newurl = curPageURL() . '?view=mytheme';
        header("Location: $newurl");
}

Это самый простой пример, который я могу придумать, чтобы выполнить то, что вы просите. Это не совсем подходит для работы, если вы хотите, чтобы URL поддерживал более длинные строки запроса, поэтому нужно немного поработать.

...