このようなhttp://localhost/join/prog/ex.php
GETメソッドを使用すると、このようなhttp://localhost/join/prog/ex.php?name=MEMORY+2+GB&price=20&quantity=2&code=1&search=add
私の質問は:だから、私はまだGETメソッドを使用していますが、GETメソッドでの処理が終了した後、URLをhttp://localhost/join/prog/ex.php
、以前と同様(POSTメソッドを使用しない)。どのようにすればよいですか?
これをHTMLファイル(HTML5)に入れます。
<script>
if(typeof window.history.pushState == 'function') {
window.history.pushState({}, "Hide", "http://localhost/join/prog/ex.php");
}
</script>
または、たとえばセッションを使用するバックエンドソリューションを使用します。
<?php
session_start();
if (!empty($_GET)) {
$_SESSION['got'] = $_GET;
header('Location: http://localhost/join/prog/ex.php');
die;
} else{
if (!empty($_SESSION['got'])) {
$_GET = $_SESSION['got'];
unset($_SESSION['got']);
}
//use the $_GET vars here..
}
簡単な回答
これをファイルの先頭に配置するだけで、読み込み後にブラウザのURLバーからGETクエリを非表示にすることができます。
<script>
if(typeof window.history.pushState == 'function') {
window.history.pushState({}, "Hide", '<?php echo $_SERVER['PHP_SELF'];?>');
}
</script>
uRLを呼び出した後、ファイルex.phpにリダイレクトしたいのですが、今回はパラメータなしで推測します。そのために、ex.phpで次のコードを使用してみてください。
<?
if($_GET['name']!='' || $_GET['price']!='' ||$_GET['quantity']!='' ||$_GET['code']!='' || $_GET['search']!=''){
/* here the code checks whether the url contains any parameters or not, if yes it will execute parameters stuffs and it will get redirected to the page http://localhost/join/prog/ex.php without any parameters*/
/* do what ever you wish to do, when the parameters are present. */
echo $name;
print $price;
//etc....
$location="http://localhost/join/prog/ex.php";
echo '<META HTTP-EQUIV="refresh" CONTENT="0;URL='.$location.'">';
exit;
}
else{
/* here rest of the body i.e the codes to be executed after redirecting or without parameters.*/
echo "Hi no parameters present!";
}
?>
ここでは、クエリ文字列にパラメータが存在するかどうかを確認せずに、同じページにリダイレクトをリダイレクトしました。コードはパラメータの存在をインテリジェントにチェックし、パラメータがある場合はex.phpにリダイレクトします。そうでない場合は「Hi no parameters present!」と出力します。ストリング!
Apacheを使用している場合は、mod_rewirteで.htaccessファイルを使用することを検討してください。 ここ クイックスタート。この結果はweb.configファイルでもiisで取得できると思います