2011-12-16 33 views
0

我有URL段: http://www.site.com/loadContent/contact/4如何隱藏URL的一部分並重定向它?

我想隱藏在瀏覽器地址欄的ID 4: http://www.site.com/loadContent/contact

接觸和4動態加載

我如何能做到這一點在我的代碼?

更新時間:

我要過時了$的pageID作爲第二個參數

我有一個功能,一代菜單列表項:

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)); 
} 

}

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); 
} 
+0

你目前的代碼是什麼? –

+0

使用'$ SESSION' Cookie –

+0

難道你不能嘗試像sha1()或md5()這樣的哈希函數來使值被混淆而不是隱藏和檢索嗎? –

回答

1

您必須先獲得ID號,並保存在$_SESSION和ofter這項工作,您使用的preg_match捐贈,URL的一個字符串沒有ID號。

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

+0

任何代碼示例來說明你的例子? – qpixo

1

您的選擇:

  1. 堅持使用GET,但打到重定向腳本/函數,將值存儲在$ _SESSION中,並重定向回頁面,而不使用URL上的數據。
  2. POST形式
  3. 使用cookie,而不是_SESSION $(BLECH)

[編輯]

合理的通用業務守則 - 應該最努力的任何頁面

<? 
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();

[編輯]

即使功能更好的代碼和GET每頁PARAM作用域(使用$_SERVER['PHP_SELF']

的內容類型:text/plain的是使的var_dump更容易閱讀,沒有什麼更多。

<? 
// 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']); 
    } 
} 
+0

任何代碼示例都有幫助嗎? – qpixo

+0

用代碼更新 –

+0

快速提問:爲什麼你需要檢查計數($ _ Get)來獲得大小?謝謝! – qpixo