URLから特定の$ _GET変数を削除する方法
-
06-07-2019 - |
質問
PHPで作成されたWebサイトがあり、ユーザーがエラーを受け取ったときに別のページにリダイレクトし(header(Location:...)
を使用)、エラーIDをURLに挿入して、表示するエラーを確認します。
E.g。ユーザーが製品ページにアクセスしようとしたが、そのアイテムが利用できなくなった場合、以前に見ていたアイテムのカテゴリにリダイレクトし、URLで指定したエラーIDに基づいてエラーを表示します。
www.example.com/view_category.php?product_category_id=4 <!> amp; error_id = 5
このアプローチについて私が嫌いな点が2つあります:
- URLにerror_idが表示されます。
- ページが更新されても、エラーは表示されます。
URLから特定の$ _GET変数をきれいに削除する方法はありますが、ページの読み込み後に残りの変数をそのまま残しますか?
おそらくmodRewriteまたはページ自体へのリダイレクトを使用しているが、URLからerror_idを削除するか、$ _ SESSION変数を使用して、URLにerror_idを入れないように考えています。あなたの考えは?
私は本当にこのコミュニティから多くのことを学んでおり、質問を投げかけた場合、スクリプトを書くのが初めてなので、何か新しいことを学んだり、さまざまなアイデアを得ることができるかもしれないと考えました。
解決
いいえ、それを明示的に行う方法はありません-少なくともページを更新しなければ、データは失われます。
一時的なセッション変数を使用する方が良いでしょう。
if ( /* error condition */ )
{
$_SESSION['last_error_id'] = 5;
header( 'Location: http://www.example.com/view_category.php?product_category_id=4' );
}
次に、view_category.phpで
if ( isset( $_SESSION['last_error_id'] ) )
{
$errorId = $_SESSION['last_error_id'];
unset( $_SESSION['last_error_id'] );
// show error #5
}
他のヒント
はい、PHPからespecific $_GET
を削除する方法があります...
varToRemove = "anyVariable";
foreach($_GET as $variable => $value){
if($variable != varToRemove){
$newurl .= $variable.'='.$value.'&';
}
}
$newurl = rtrim($newurl,'&');
次に、リンクに$ newurlを挿入します。次のようにします。
pageurl?something=something&<? echo $newurl; ?>
知っている<!>#180;古い投稿ですが、他のプログラマが検索しているかもしれません!
まず、データベースにエラーを記録します:)
その後、Cookieまたはセッション変数を設定し、ユーザーを安全なページにリダイレクトします。そのページが読み込まれたら、変数を確認してエラーを表示し、Cookieまたはセッション配列から変数を削除します。
1つの方法は、HTTP_REFERER
とSCRIPT_NAME
を比較することです。ユーザーが[更新]を押した場合も同じです。
クイックハック:&quot;&amp;&quot;で imploded()
'dすることもできます。 $ _ SERVER ['QUERY_STRING']
変数でその文字列を操作してから、 explode()
でそれを戻します。
このアプローチは機能しませんか?
<?php
$params = array_diff(このアプローチは機能しませんか?
<*>GET, array("variable_name" => $value));
$new_query_string = http_build_query($params);
?>
<script>window.history.pushState('verify_email', 'Verify Email', '?<?php echo $new_query_string; ?>');</script>
iにも同じ問題がありました
試してください: http://www.azazia.com/kb/entry/26/
if (!empty( iにも同じ問題がありました
試してください: http://www.azazia.com/kb/entry/26/
<*>
}
完璧に動作します。
GET['passvar'])) {
unset( iにも同じ問題がありました
試してください: http://www.azazia.com/kb/entry/26/
<*>
}
完璧に動作します。
GET['passvar']);
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=". iにも同じ問題がありました
試してください: http://www.azazia.com/kb/entry/26/
<*>
}
完璧に動作します。
SERVER['PHP_SELF']."\" >";
}
完璧に動作します。