我尝试使用fopen
功能从远程网址下载文件。
问题是它的功能从我需要的一个网站返回false。从其他领域,功能正常。
怎么可能?也许在PHP中有一些选项?或者该网站可以保护文件免受某些访问(但是从浏览器文件可用)?
答案 0 :(得分:1)
服务器端可以做很多检查以防止"错过使用"他们的服务。一个例子是检查" HTTP Referer Header"表示您的请求是由浏览器从指向对象的链接导航完成的。
如果您愿意,可以模拟所有这些,但为此您必须确切了解您的请求与浏览器成功之间的区别。有两件事要做:
找出您收到的确切错误消息。最简单的方法是使用php的cURL
扩展名而不是file_open()
作为您的请求,它允许您转储您获得的所有内容。回复中可能会有一些有价值的信息。
通过网络嗅探器监控这两个请求,例如tcpdump
或wireshark
。两个请求的比较可以说明确切的区别。这也是您在脚本中精确重建浏览器请求所需的信息。
答案 1 :(得分:0)
在某些共享主机或某些VPS fopen无法正常工作或在PHP内禁用。尝试使用CURL来获取contnt。如果这不起作用,最后的解决方案(仅当您通过GET发送一些信息而不是重新接收数据时)是使用<img>
标签并在“src”内发送请求。只有当你发送信息时才能工作,但是如果你需要回忆某些东西,你需要使用或者使用AJAX或者cURL。