2012-01-20 4 views
1

私の最終的な目標は、phpを使用してURLからクエリ文字列を取り除くことです。ですから、PHPがクエリ文字列パラメータを使用するように変更する前に、そのパラメータを削除したくありません。その後、 "http://www.mysite.com?id=3993993"URLを.htaccessではなくPHPだけで変更できますか?

とPHPを使用して$ _GET [ 'ID']で何かを、

と削除」:

私が撮りたいです?id = 3993993 "をURLから削除して、" http://www.mysite.com "を残してください。

どうすればいいですか?

+0

したがって、IDのあるURLからIDなしのURLにリダイレクトしたいですか?なぜ最初の場所にIDがあるのですか?あなたはそれで何かしていますか? –

+1

getの代わりにPOSTを使用してください – WordsWorth

答えて

0

あなたはあなたがhttp://www.mysite.comにリダイレクトすることができ、PHPの関数を経由してHeader

+1

このリンクは質問に答えるかもしれませんが、ここで答えの重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 – Smamatti

+0

さて、フィードバックいただきありがとうございます。次回は –

0

それを行うことができます。

header('Location: http://www.mysite.com'); 

注意あなたが任意のコンテンツを出力した後、あなたが出力ベースを生成したい場合、あなたはこれを行うことはできませんあなたは問題を抱えています。あなたはセッションにIDを格納し、リダイレクトの後でそれを読み込んで処理することができますが、クライアントがクッキーを無効にしている場合はこれが機能しません。

2

あなたは$_GETから値を取得し、その後、$_SESSIONに保管リダイレクトすることができます

// Load the id from GET into SESSION 
session_start(); 
$_SESSION['id'] = isset($_GET['id']) ? $_GET['id'] : NULL; 

// Reidrect to the new URL 
if (isset($_GET['id'])) { 
    header("Location: http://www.mysite.com"); 
    exit(); 
} 

// Reload the value from $_SESSION if it is there (and not also in $_GET) 
if (!empty($_SESSION['id']) && !isset($_GET['id'])) { 
    $id = $_SESSION['id']; 
    // Remove it from SESSION to prevent accidental reloads 
    unset($_SESSION['id']); 
} 
+2

+1に焦点を当てますが、私はOPがこれ以上サイトのナビゲーションに使用されないことを願っています。 – jeroen

0

がリダイレクトを行うと、リファラをチェック。また、安全のためにクッキーや$ _SESSION変数に保存することもできます。

0

これを実行できる唯一の方法は、「mysite」にリダイレクトされてもデータがなくなるため、PHPに「id」の値を「記憶」させることです。

私が使用するのは、ページがリフレッシュされても永続的なデータであるCookieまたはセッションデータです。

私のようなものだろう:あなたが持っている後

$dosomethingwith = $_SESSION['tempid']; 
unset($_SESSION['tempid']); 

あなたはセッション変数をクリアすることがあります:あなたはセッション変数を使用して好きなときに、あなたは、この変数を参照することができ

$_SESSION['tempid'] = $_GET['id']; //for remembering the data 
header("Location: index.php"); //redirect 

をtempidを使用しました

0

私が考えることができる唯一の方法は、GET値をキャプチャしてセッションに保存し、paramsを設定せずに同じページにリダイレクトすることです。

if(!empty($_GET)) { 
    $_SESSION['GET'] = $_GET; 
    $url = parse_url($_SERVER['REQUEST_URI'],PHP_URL_PATH); 
    header('Location: '.$url); 
    die(); 
} 


if(!empty($_SESSION['GET'])) { 
    $_GET = $_SESSION['GET']; 
    unset($_SESSION['GET']); 
} 
0

http://www.mysite.com/

<?php 
session_start(); 
$_COOKIE['something'] = md5($whatever); 
$_SESSION['query'] = $_SERVER['QUERY_STRING']; 

if ($_SERVER['QUERY_STRING'] != '/') 
    header("Location: /"); 

if (isset ($_SESSION['query'])){ 
    /* display your page */ 
} 
?> 
http://www.mysite.com/?id=3993993ページからユーザーをリダイレクトし、その後、私はこれを行うには、あなたに助言ませんが、、1つの解決策は、クッキーを設定されることがあり、クエリパラメータが含まれているセッション変数を登録します

NOTこれを使用することを強くお勧めします。ほとんどの検索エンジンのボットは、クッキーを受け入れません。

私はこのスクリプトをテストしませんでした。

関連する問題