ホームページ >バックエンド開発 >PHPチュートリアル >preg_match を使用して URL をインターセプトし、パラメーターの受け渡しに失敗する方法は?

preg_match を使用して URL をインターセプトし、パラメーターの受け渡しに失敗する方法は?

PHP中文网
PHP中文网オリジナル
2016-06-27 13:18:071056ブラウズ

ローカルで呼び出される

と同じように、2つのWebサイトが同じデータを呼び出せるように、1つのWebサイトで別のWebサイトのデータを呼び出したいと考えています。

例: 私の Web サイト a と Web サイト b

次のように入力すると: http://www.a.com/x.php/123/456.rar
実際に呼び出されるのは次のとおりです: http://www.b .com/123/456.rar (実際のファイル保存アドレス)
ダウンロードすると、www.a.com からダウンロードされたことが表示されます。

私の x.php は次のようなものです:

<?php  
 header("content-Type: text/html; charset=Utf-8");  
 $SERVER=$_SERVER["REQUEST_URI"];  
 preg_match("/php\/([\s\S]+)\.rar/",$SERVER,$url);  
 $urlname=$url[1];  
 $songurl=&#39;http://www.b.com/&#39;.$urlname.&#39;/&#39;;  
 header("location:$songurl");  
 ?>


このコードを通じて、最初の URL の 123 が 2 番目の URL に渡されます。
しかし、上記のコードは正常に通過しませんでした:
http://www.a.com/x.php/123/456.rar と入力すると、表示される 2 番目の URL は次のとおりです:

http://www.b.コム。 URL に「123」が表示されません。2 番目の URL に渡されたパラメータ「123」と「456」を取得するには、どのような変更を行う必要があるか教えてください。

解決策

1. まず、
$_SERVER["REQUEST_URI"] の内容が x.php/123/456.rar であるかどうかを確認します
2. 正規表現が実際に
preg_match("/ php /([sS]+.rar)/",$SERVER,$url);
$urlname=$url[1];
$songurl='http://www.b.com/'.$urlname; // このようにして、接尾辞が rar

で終わるリンク http://www.b.com/123/456.rar をつなぎ合わせることができます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。