如何将自定义值添加到当前URL

时间:2012-01-31 11:56:02

标签: php url-rewriting elgg

我使用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';
  }

我不知道如何获取当前网址,并在最后简单添加?view = mytheme?

当用户输入“&#39; 2&#39;”时,会看到网址http://www.mydomain.com/index.php 它必须转发到&gt; http://www.mydomain.com/index.php?view=mytheme

感谢。

1 个答案:

答案 0 :(得分:1)

这有点脏,但你可以:

// 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支持更长的查询字符串,那么这将无法完成工作,因此需要一些工作。