“包含”中的“ifelse”命令

时间:2011-11-26 17:34:46

标签: php include

哪里出错?

  <?
  if($_GET['data'])
  {
    print 'atmam';
include ('http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1');
  }
  else {
   print 'fail to download'; }
   ?>

写在屏幕上的错误:

    Warning: Unexpected character in input: '' (ASCII=1) state=1 in                         http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 on line 515

    Parse error: syntax error, unexpected T_STRING in http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 on line 515

PS:http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1 =直接文件下载链接

你能帮忙吗? 最好的问候

2 个答案:

答案 0 :(得分:0)

看看这是否符合您的要求:

<?php

  if ($_GET['data']) {

    // Some headers that indicate a generic download
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment');

    // Try and read the file directly to the client
    if (!@readfile('http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1')) {
      // Try and clear the header and print a message. This may not work depending on the result of the readfile() attempt.
      @header('Content-Disposition:');
      print 'fail to download';
    }

    exit;

  }

?>

另一种选择(许多人会说更好)的方法是:

<?php

  if ($_GET['data']) {

    // Redirect the client to the actual location
    header('HTTP/1.1 302 Found');
    header('Location: http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1');
    exit;

  }

?>

答案 1 :(得分:0)

PHP为此提供了一个名为file_exists的函数。 $ _GET ['data']用于从html元素中获取信息,其中附有name =“data”。如果你的文档中没有这个,脚本将永远不会运行,因为它寻找不存在的东西。即使元素确实存在,这也不是$ _GET的必要或推荐使用。

要了解有关您要执行的操作的更多信息,请查看此链接,然后查看我的示例。

http://php.net/manual/en/function.file-exists.php

要使用它,您只需执行此操作:

    $filename = 'http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1';
    if (file_exists($filename)) {
         echo 'atmam';
         include ('$filename');
    }
    else
         echo 'Failed to download file';

我假设您要将此用于您网站必须访问的任何文件,以节省您在功能中使用它的时间。

 function testfile(filename)  {
       if (file_exists(filename)) {
         echo 'atmam';
         include ('filename');
      }
      else
         echo 'Failed to download file';
}

像这样调用函数:

    $filename1 = 'http://downloads.website.com/download/3725f5eea93437e9de52f9b15854f5c1';
    $filename2 = 'something.txt';

    function testfile($filename1);

使用该功能,您可以使用每个文件名的变量检查任意数量的文件名。

编辑:要解决即将出现的语法错误,您必须确保包含的文件没有错误。请在这里发布给我们看看。删除回声和打印将不会改变任何东西,实际上你想要那些在那里调试。首先尝试使用我放在这里的一小段代码,这是检查文件是否存在的正确方法,如果存在,则执行某些操作。一旦您使用正确的代码检查文件并将其包含在内,您就可以确定一旦修复了包含文件中的任何问题,您将拥有所需的功能。

希望这会帮助你! -Sean