押入れ起業

ガレージベンチャー、ならぬ。もっぱらPHPプログラミングとアフィリエイトの研究をしています。

JavaScript

短縮URL作成サイトのブックマークレットJavaScriptが間違っていた

投稿日:

ヤバい!

よくわからないまま他のサイトのブックマークレットから類推してテキトーに作ってたいせいだ!

javascript:window.location='http://bitly.oshiire.org/?bm='+escape(location.href);

escapeを使っていたので変換元のURLに含まれる「&」がエンコードされていなかった。そのため変換元のURLに「&」が含まれた場合、「&」以降のパラメータがずべて消えてしまっていた。すまぬ…すまぬ…

「?bm=」とあるように、php側では$_GET[‘bm’]でURLを受け取っている。しかし「&」がエンコードされていないと、例えば http://example.com?a=1&b=2 というURLを送信した場合は「http://bitly.oshiire.org/?bm=http%3Aexample.com?a=1&b=2」となる。つまり「?bm=」すなわち$_GET[‘bm’]に入るのは「http%3Aexample.com?a=1」までで、「&」で区切られてたのちに続く「b=2」は$_GET[‘b’]に入ってしまう。

escapeではなくencodeURIを使っても、やはり「&」はエンコードされないようだ

んで結局 encodeURIComponent というのを使えば大丈夫っぽい。ちゃんと「%26」へ変換してくれたので受け取れた。

いやいやいや~参ったね。近日予定のサイト更新時に新しいブックマークレットを表示します。

PC

PC

-JavaScript

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

JavaScriptでwindow.openする自作ツイートボタンでポップアップが2つ出る問題の馬鹿みたいに簡単な解決方法

ウェブサイトのデザインによる理由でTwitter公式のツイートボタンを使わずに、公式同様の小画面がポップアップするJavaScriptを仕込んだリンクを作ったんです。 <a href=&quot …

open all | close all
open all | close all