0

特定の URL をヒットしたときの応答を、PHP を使用してアンカー タグの href 属性に書き込みたいと考えています。これどうやってするの?

これが私が期待することの例です

mylink.com/getdoc?name=documentA

応答として文字列を返します。

mylink.com/document2012-03-15.pdf

この応答を書き込む必要があります (以下に示すように、PHP を使用して href 属性に:

<a href="mylink.com/document2012-03-15.pdf"> Open Document A </a>

(したがって、上記は私のページの最終的なソースになります。

4

3 に答える 3

3

あなたがやりたいことをする方法はいくつかあると思います。すべてが要求どおりに機能するわけではありませんが、最終的な結果は同じになるはずです。

解決策 1

私の最初の可能な解決策は、@shanethehat によって既に投稿されています。file_get_contentsHTTP 経由で PHP スクリプトを呼び出し、応答を取得するために使用できます。

解決策 2

@YourCommonSense による投稿のコメントで、別の可能な解決策が提案されました。次のように、HTML ファイルを生成している PHP スクリプト内のスクリプトをinclude単純化できます。getdoc

$_GET["name"] = "documentA";
echo "<a href=\"". include("getdoc.php") ."\"> Open Document A </a>";

解決策 3

getdocまたは、スクリプトの動作方法を変更することもできます。次のようなスクリプトを使用できます。

header("Content-type:application/pdf");
header("Content-Disposition:attachment; filename=\"{$_GET["name"]}\"");
readfile($_GET["name"]);

そして、次のようにリンクを維持します<a href="mylink.com/getdoc.php?name=documentA"> Open Document A </a>。がgetdoc.php呼び出されると、指定されたファイルが取得され、ファイルのダウンロードが開始されます。

注:この方法で何らかの入力サニタイズ (スラッシュを削除する、ファイルが .pdf で終わるようにするなど) を行って、許可されていないファイルを誰かが取得しようとしないようにする必要があります。



現時点で思いつくのはこれだけです。もっと巧妙な方法があるかもしれませんが、うまくいけば、これらの解決策の 1 つがあなたのためにそれを行うでしょう。最初に解決策 2 または 3 を試して、うまくいかない場合は解決策 1 を試してください。

于 2012-04-18T14:26:02.823 に答える
1
<?php
    //get output from URL
    $myfile = file_get_contents('http://mylink.com/getdoc?name=documentA');
?>
<a href="<?php echo $myfile; ?>">Open Document A</a>
于 2012-04-18T13:26:09.080 に答える
1

PHPを使用してファイルに応答を書き込む方法

とんでもない。
PHP は HTTP リクエストを処理しません。
書き換えを行うには、Web サーバーをセットアップする必要があります。
mod_rewrite タグの下に 100500 の質問があり、簡単に解決策を見つけることができます。

/getdoc.php?name=document2012-03-15.pdf質問で言及したものではなく、URLをに書き換えたい場合があることに注意してください

于 2012-04-18T13:26:25.240 に答える