クエリ文字列を介してエンコードされた URL を取得しています。次のページにもう一度渡す必要があります。を使用して初めて取得すると$_REQUEST['url']
、スラッシュのみがデコードされます。
http://example.com/search~S10?/Xllamas&searchscope=10&SORT=D/Xllamas&searchscope=10&SORT=D&SUBKEY=llamas/51%2C64%2C64%2CB/browse
urldecodeのphp docs ページでは、リクエスト データをデコードしないようにアドバイスしており、既にデコードされていると述べています。一部の部分を二重にエンコードせずに再度エンコードできるように、完全にデコードするか、まったくデコードしない必要があります。
このデータに関する私の経験が php ドキュメントと一致しない理由がわかりません。同じことへの助けや指針に感謝します!!
編集:関連するコードを投稿しようとします。これは散らばっています:
URL はエンコードされ、クエリ文字列に追加されます (smarty テンプレートを使用した html ファイル内):
<a class="button" href="{$baseurl}search_nojs?searcharg={$searcharg|escape:'url'}&url={$next|escape:'url'}"><span>Next>></span></a>
そのリンクをたどった場合、クエリ文字列から URL を取得しています (php ファイル内):
if(array_key_exists('url', $_REQUEST)) { $sm->assign("searchurl", $_REQUEST['url']); }
次に、次のリンク (別の html ファイル内) のクエリ文字列に URL を貼り付けたいと思います。
href="{$baseurl}detail?bibid={$res.bibid}&searcharg={$searcharg}{if $searchurl}&searchurl={$searchurl}{/if}"
{$searchurl}
また、ページに直接印刷して、同じ半分エスケープした結果を得ています。
クエリ文字列と取得したデータの別の例を次に示します$_REQUEST
。
最初にクエリ文字列にエンコードされた URL:
searcharg=mammals&url=http%3A%2F%2Fexample.com%2Fsearch%7ES10%3F%2FXmammals%26searchscope%3D10%26SORT%3DD%2FXmammals%26searchscope%3D10%26SORT%3DD%26SUBKEY%3Dmammals%2F51%252C1114%252C1114%252CB%2Fbrowse
から取得したデータ$_REQUEST
:
searcharg=mammals&searchurl=http://example.com/search~S10?/Xmammals&searchscope=10&SORT=D/Xmammals&searchscope=10&SORT=D&SUBKEY=mammals/51%2C1114%2C1114%2CB/browse
この方法は奇妙に思えるかもしれませんが、ブラックボックス データベースを使用してモバイル ディスプレイを作成しようとしています。助けてくれてありがとう!