2016-09-14 10 views
3

私はクライアントがメールで予約を行うことができるparkosのウェブサイトで作業していますが、一部のクライアントはメールにプラス記号を使用しています。例えば取得リクエスト文字列に+を付けてください

[email protected] 

今例えば、クライアントが、私は、URLにGETリクエストを作成していて、あなたがこのようなものになるだろう彼らの予約を確認したい場合:後

http://test.com/reservations/[email protected]&number=GH76G 

を私は電子メールを取得してそれをエコーし​​ようとしています:

$email = request()->input('email'); 
{{!! $email!!}} 

私がそれを見てみるとebpageこれは私が得るものです:

test [email protected] 

+記号がなくなっていると+記号を維持する方法がある場合、私は思っていました。

+0

を使うとでurlencode](http://php.net/manual/en/function.urlencode.php)およびurldecode – Thamilan

+0

@Thamilanリクエスト() - あなたのために>入力用urldecode私は –

+0

おかげで@ Mixedf ruitjuice http://test.com/reservations/[email protected]はどのように入手しましたか?com&number = GH76G URLはどこですか? – Mixedfruitjuice

答えて

2

+記号はCGI標準に従って独自の意味を持つため、URLが間違っています。これは空白を意味します。

右のURLが

http://test.com/reservations/?email=test%[email protected]&number=GH76G

としては、さらにミスを避けるために

+ becomes %2B 
space becomes %20 

URLs and plus signsに説明SHOLD、ベストプラクティスは、このようなURLでそれを使用する前に、テキストを符号化されています

$url = "http://" . $domain . "/whatever.php?text=" . urlencode($text); 
0

デコードを送信するDのURLと$ _GET [ 'メール']

urlencode('[email protected]'); 
+0

'urlencode'を意味するのであれば、autmatic urlencodeを引き起こしますか? –

+0

$ url = "http://domain/index.php?email =" .urlencode($ path);あなたがメールを受け取ったら、+記号 –

+0

でメールを受け取るでしょう。はい、最初は 'urldecode' –

0

スペース文字は、アプリケーション/ x-www-form-urlencodedでキーと値のペアで "+" としてエンコードされます。

RFC-1866(HTML 2.0仕様)の8.2.1項。 "フォームフィールドの名前と値はエスケープされます:空白文字は` + 'で置き換えられ、予約文字はエスケープされます ")。

したがって、URLをデコードしている間、プラスはスペースにデコードされます。たとえば、あなたのURLに。

PHPを使用してこのURLを構築する場合は、各キーと値のペアでurlencode()を呼び出し、エンコードされていない文字列を連結しないでください。

http://test.com/reservations/[email protected]&number=GH76G 

メールはURLで「+」の文字が正しくパーセントエンコードされていることを確認し、それを防ぐために

test [email protected] 

になりますので、正しいURLは次のようする必要があります。

http://test.com/reservations/?email=test%[email protected]&number=GH76G 
関連する問題