2016-12-19 5 views
1
私は、次のURLを使用してい

PHPのURL許可していない '+' 記号

http://example.com/walkthrough?hostid=abcd&[email protected] 

は、私はこのような変数でinspectoremailを取得します。

$inspectoremail = $_GET['inspectoremail']; 

ただし、$ inspectoremailをエコーすると、空白で「+」記号が置き換えられます。

abc @gmail.com 

だからどのように私はそれがURLに指定されているようinspectoremail得ることができます。 何か助けていただければ幸いです。ありがとう

+1

'+'はURLに特別な意味を持ちます。あなたがリテラル '+'を望んでいるなら、それをurlencode –

+0

、または 'space'を' + 'で置き換えてください。 – Tom

+0

はい、これは私のために働いた。 – Aamir

答えて

2

URLに特殊文字を渡すときは、それらをエンコードする必要があります(urlencodeをPHPで使用)。あなたの例では

- プラス(+)文字が%2Bに翻訳されているので、あなたが使用する必要があります:あなたはスペース文字()をエンコードしようとした場合

http://example.com/walkthrough?hostid=abcd&inspectoremail=abc%[email protected] 

あなたはこの文字が翻訳することがわかります+に設定されているため、サーバーが文字列をデコードすると、[email protected]の値はabc @gmail.com(これはあなたのものです)になります。

+0

エンコーディング後、$ _GET ['inspectoremail']をエコーすると同じですが、+は空白で置き換えられます。 – Aamir

+0

URLをエンコードし、デコードしてGETメソッドにも反映させるにはどうすればよいですか? ?? – Aamir

+0

['urlencode()'](http://php.net/urlencode)/ ['' urldecode() '](http://php.net/urldecode) – Qirel

関連する問題