0

我希望使用 PHP 将点击给定 url 的响应写入锚标记的 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

我认为有几种方法可以做你想做的事。并非所有这些都能完全按照您的要求工作,但最终结果应该是相同的。

解决方案一

@shanethehat 已经发布了我的第一个可能的解决方案。您可以使用file_get_contents通过 HTTP 调用您的 PHP 脚本并获取响应。

解决方案二

@YourCommonSense 在帖子的评论中提出了另一种可能的解决方案。您可以简单地include使用getdoc生成 HTML 文件的 PHP 脚本中的脚本,如下所示:

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

解决方案三

或者您可以更改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 结尾等),以确保有人不会尝试获取他们不允许获取的文件。



这就是我现在想出的全部。可能有一种更聪明的方法可以做到这一点,但希望这些解决方案中的一个可以为您做到这一点。我会先尝试解决方案 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 请求。
你必须设置你的网络服务器来进行重写。
mod_rewrite标签下有100500个问题,你会很容易找到答案的。

请注意,您可能希望将您的 url 重写为/getdoc.php?name=document2012-03-15.pdf,而不是您在问题中提到的

于 2012-04-18T13:26:25.240 回答