2011-10-27 9 views
0

発信URLページを使用して、ユーザーを外部ウェブサイトに誘導します。発信URLストリップ文字

私が持っている問題は、Twitterフィードです。私たちのリダイレクトは、URLから#!/ twitterusernameを削除します。

私たちのPHPは次のとおりです。

<? 
$goto = $_GET['url']; 
$referrer = $_SERVER['HTTP_REFERER']; 
?> 

リンクHTMLは次のとおりです。

<div> 
<a class="mini green button" href="<?=$goto;?>">Continue to <span style="text-transform:lowercase !important;"><?=$goto;?></span></a> 
</div> 

送信URLは次のようになります。

http://twitter.com/ 
:後藤リンクになるしかし

http://twitter.com/#!/twitterusername 

なぜ、私は金髪の瞬間を持っています

+0

を使用し、中間PHPで次に

<a href="<?=urlencode("http://twitter.com/#!/twitterusername")?>">Twitter</a> 

を使用する必要があると ' $ referrer'、その値は何ですか? – wclark

+0

gotoの値はhttp://twitter.com/で、リファラーはhttp://www.oursite.com/ – 422

答えて

0

おそらく、着信URLに#文字が正しくエンコードされていないためです。 #のあとのすべては、サーバに送信されないローカルアンカーです。したがって、http://your.site.com/controller?url=http://twitter.com/#!/twitterusernameがあった場合、#の後のすべてがローカルアンカーとして解釈され、サーバーには送信されません。パラメータをURLエンコードする必要があります。

使用http://php.net/manual/en/function.urlencode.php

+0

これをどのように管理するか考えていますか? – 422

0

あなたはurlencodeを使用する必要があります。それでおしまい。

その後、

$referrer = $_SERVER['HTTP_REFERER']; 

echo 'go.php?url=' . urlencode($referrer); 

http://twitter.com/#!/twitterusernamehttp%3A%2F%2Ftwitter.com%2F%23%21%2Ftwitterusernameに符号化されることになるようなものは、あなたが響き渡る前にそれを中間ページに送信し、urldecodeとき

0

あなたは後藤のURLをurlencodeする必要が必要なものであるやりますそれ。元のリンクが含まれているページで

、あなたが `` $のgoto`をecho`またはログインするときに

$goto = urldecode($_GET['url']); 
+0

このコードは機能しないようです:Twitter 私はそれを台無しにしましたか? – 422

+0

ありがとうございます。 'Twitter'を使う –