- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:「Referer-Sweeper」というフリーCGIの事で)
フリーCGI「Referer-Sweeper」のジャンプURLの問題
このQ&Aのポイント
- 「Referer-Sweeper」というフリーCGIの配布サイトで提供されているスクリプト「Referer-Sweeper」において、ジャンプするURLのページ内リンクの「#」以降が無視される問題があります。
- 問題の解決方法は見つかっておらず、作者に直接連絡する手段もないため、改良の余地があるのかどうか教えていただきたいです。
- ただし、配布ソフトは「原則として自由に使用・複製・再配布・改良版の再配布等ができる」という条件がありますので、詳しい方のアドバイスをお待ちしています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
もう解決されたかもしれませんが、perl初心者の私でも答えられそうな質問が未解決になっておりましたので回答させていただきます。 クエリとはURLの ? 以降の事でCGIにデータを渡す方法の一つ、GETメソッドと言います。 クエリでは #(シャープ)を含むそれ以降の文字列をCGIに渡す事が出来ません。 クエリに使う文字列にはURLエンコード処理された文字列を使います。 まず、「ジャンプするURL」をエンコードして下さい。 ご自分でエンコードできない場合は参考URLのようなページでエンコードが可能です。 エンコードしたURLを、 ?url= の後に付けてください。 これでクエリに使えない文字が使えるようになりました。 次にご提示されているperlスクリプトにも変更が必要です。 スクリプトを何も変更されていないと仮定しまして、78行目 $url =~ s/^url\=(.*)/$1/; の行の下に以下の1行を追加します。 $url =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/ego; これはデコード処理と言いましてエンコードした文字列を元の文字列に戻す処理です。 終わりです。 perlは結構面白いので是非色々と勉強してみてください。
お礼
「ジャンプするURL」をエンコードしなければいけないのですね。 掲示板に書き込まれたURLに対応させるには、掲示板側のCGIもいじらなければいけないって事ですね。 なかなか難しいんですね。 でも、「Referer-Sweeper」でのデコード処理を教えていただけて助かりました。 どういう風に考えれば良いのかも説明してくださったので、少し勉強してみようと思います。 本当に有り難う御座いました。