首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何隐藏URL的一部分并进行重定向?

如何隐藏URL的一部分并进行重定向?
EN

Stack Overflow用户
提问于 2011-12-17 05:21:56
回答 2查看 2.3K关注 0票数 0

我有网址段:http://www.site.com/loadContent/contact/4

我想隐藏浏览器地址栏中的ID 4:http://www.site.com/loadContent/contact

联系人和4都是动态加载的

我如何在我的代码中做到这一点?

更新:

我必须将$pageID作为第二个参数传递

我有一个生成菜单列表项的功能:

代码语言:javascript
复制
function buildListItem($item) {
$urlItemName = url_title($item->name, 'dash', TRUE); 
$urlCatID = ($item->cat_id);
$url = base_url() . $urlItemName . "/". $urlCatID;

if ($urlItemName == 'blog') {
    $blog = "http://blog.tumblr.com";
    return anchor($blog, strtoupper($item->name), 'target="_blank"');
} else {
    return active_anchor($url, strtoupper($item->name));
}

}

代码语言:javascript
复制
public function loadContent($name, $pageID) {
    $data['title'] = $this->tabPageData;
    $data['tabMenu'] = $this->model->getAllMenuItems();
    $data['links'] = $this->model->getLinksURLIcon();

    $pageName = array('portfolio-1', 'portfolio-2');

    // Store pageID within Session
    //$sessionPageID = $this->session->set_userdata($this->uri->segment(2));

    // Check if $name is in array pageName, get the page content and its name
    if (in_array($name, $pageName)) {
        $data['tabPageContent'] = $this->model->getPageContentByPageID($pageID);
        $data['pageName'] = $this->model->getPageNameByID($pageID);
    } elseif ($name == 'contact') {
        // load Contact page
        $data['tabContact'] = $this->model->getContactByPageID($pageID);
    }

    $this->load->view('content', $data);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-17 05:44:32

首先,你必须获得id号并保存在$_SESSION中,在这项工作之后,你使用preg_match给出,一个没有id号的url字符串。

最后,使用<?php header("location: ". $URL") ?>重定向url

票数 1
EN

Stack Overflow用户

发布于 2011-12-17 05:27:38

您的选择:

  1. 坚持使用GET,但使用了重定向脚本/函数,将值存储在$_SESSION中,然后重定向回没有url上数据的页面。
  2. 使用cookies而不是$_SESSION(blech)

发布表单

编辑

合理的通用代码-应该适用于几乎任何页面的

代码语言:javascript
复制
<?
session_start();

if ( count ( $_GET ) )
{
    $_SESSION['__get'] = $_GET;
    header( 'Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] );
    exit();
}
elseif ( array_key_exists( '__get', $_SESSION ) && count( $_SESSION['__get'] ) )
{
    $_GET = $_SESSION['__get'];
    $_SESSION['__get'] = array();
}


var_dump ( $_GET );

注意:底部的var_dump将在一个没有任何URL参数的页面上显示$_GET。

注意:这是一次性的。第二次重新加载脚本将显示$_GET已被清空。如果您不需要这样做,请删除elseif块中的$_SESSION['__get'] = array();

编辑

更好的函数代码和每页的参数作用域(使用$_SERVER['PHP_SELF'])

content-type: text/plain只是为了使var_dump更易读,仅此而已。

代码语言:javascript
复制
<?
// no-get.php
session_start();
header( 'content-type: text/plain' );

noGet();
var_dump( $_GET );
forgetNoGetPage();
var_dump( $_GET );

/**
* noGet - saves $_GET values to $_SESSION and redirects to same page
* @requires Session to be started
*/
function noGet()
{
    // check count to see if there are fresh variables being passed to the script
    // if there are, we overwrite any existing page variables in the session
    // if we didn't do this, we could never pass new variables on the url to our scripts
    if ( count ( $_GET ) )
    {
        $_SESSION['__get'][$_SERVER['PHP_SELF']] = $_GET;
        header( 'Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] );
        exit();
    }
    elseif (
        array_key_exists( '__get', $_SESSION ) &&
        array_key_exists( $_SERVER['PHP_SELF'], $_SESSION['__get'] ) &&
        count( $_SESSION['__get'][$_SERVER['PHP_SELF']] )
    )
    {
        $_GET = $_SESSION['__get'][$_SERVER['PHP_SELF']];
    }
}

/**
* forgetNoGetPage - removes a page's $_GET values from the session and optionally redirects to the current page.
* @param String The page to remove entries for
* @param Bool Redirect after remove?
*/
function forgetNoGetPage( $page = null, $redirect = false )
{
    if ( $page === null )
    {
        $page = $_SERVER['PHP_SELF'];
    }

    unset( $_SESSION['__get'][$page] );

    if ( $redirect )
    {
        header( 'Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8540301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档