$_GET で受け取った値に含まれるスラッシュが自動でエスケープされてしまう
PHP(Ver.7.2/Phalcon) を使用しています。
GETで送信されたパラメータ(URL)を短縮URLに変換する処理を作成中なのですが、
GETで受け取った値を確認すると、URL冒頭の http(s)://
の スラッシュ がエスケープされているのか、自動で 1つ 削除されてしまいます。
何が原因になっているかわかりますでしょうか。
URLのパラメーターはできればURLエンコードせず、文字列としてそのまま受け取りたいです。
▼出力結果
(例) https://sample.com?url=https://example.com
php
1var_dump($this->request->get('url')); 2// string(18) "https:/example.com" 3 4var_dump($_GET['url']); 5// string(18) "https:/example.com" 6 7 8var_dump(stripslashes($_GET['url'])); 9// string(18) "https:/example.com"
試したこと
magic_quotes_gpc
は php5.4 で削除されたはずですが、 念の為 get_magic_quotes_gpc() で現在の設定を確認したところfalse
で返ってきた- phpinfo() で
magic_quotes_gpc
がOn
になっていないか確認 => 記載なし - エスケープされている可能性を考慮し、 __ stripslashes()__ でクォート除去 => 変化なし
以下ファイルを配置して http://example.jp/phpinfo.php?url=https%3A%2F%2Fexample.com
にアクセスしたとき、$_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING'], $_GET['url']
の値はどうなっているでしょうか?
[TOF phpinfo.php]
<?php
phpinfo();
[EOL]
どこかで(webサーバーとかで)rewriteかけてたりしませんか?
回答1件
あなたの回答
tips
プレビュー