【问题标题】:md5_file() not working with remote content fetched by URLmd5_file() 不适用于通过 URL 获取的远程内容
【发布时间】:2010-05-02 18:15:03
【问题描述】:

这是我与问题相关的代码:

$theurl = trim($_POST['url']);
    $md5file = md5_file($theurl);
        if ($md5file != '96a0cec80eb773687ca28840ecc67ca1') { echo 'Hash doesn\'t match. Incorrect file. Reupload it and try again'; 

当我运行这个脚本时,它甚至没有输出错误。它只是停止。它加载了一会儿,然后就停止了。

在脚本的后面我再次实现它,它在这里也失败了:

while($row=mysql_fetch_array($execquery, MYSQL_ASSOC)){

$hash = @md5_file($row['url']);

$url = $row['url'];

mysql_query("UPDATE urls SET hash='" . $hash . "' WHERE url='" . $url . "'") or die("There was a problem: ".mysql_error());

        if ($hash != '96a0cec80eb773687ca28840ecc67ca1'){
            $status = 'down';
            }else{
            $status = 'up';
            }
mysql_query("UPDATE urls SET status='" . $status . "' WHERE url='" . $url . "'") or die("There was a problem: ".mysql_error());

            }

它会检查所有 URL 是否正常,直到找到一个带有 IP 而不是域的 URL,例如:

http://188.72.216.143/~waffle/udp.php

在其中,脚本再次加载一点,然后停止。

任何帮助都将不胜感激,如果您需要更多信息,请询问。

编辑:它似乎适用于某些 IP,但不适用于其他 IP

【问题讨论】:

  • 您尝试完成的所有这些 url 散列的意义何在,每一步都跌跌撞撞?
  • 尝试删除@,以便查看是否发生任何错误。

标签: php mysql md5 md5-file


【解决方案1】:

我认为md5_file 仅适用于本地文件。该文档当然没有提及请求或任何内容。如果您手动获取文件,您可以使用md5 来计算文档的哈希值。试一试。

<?php

    $contents = file_get_contents('http://stackoverflow.com');
    $md5file = md5($contents);

    echo $md5file;

?>

【讨论】:

  • 它适用于远程文件,它适用于我输入的任何 url,IP 除外。不过谢谢。
  • 然后,再试一次不会有什么坏处,如果有的话,看看它的 md5_file() 是否导致了问题。给我一点时间
  • 虽然这并没有解决问题,但它确实帮助我意识到这不是函数的问题。我尝试使用 cURL 甚至 lynx,但它似乎只是超时了。这很奇怪,但是,嗯,不同的问题。谢谢您的帮助。并且供您将来参考,因为学习新事物总是好的, md5_file() DOES 可以处理远程文件。
猜你喜欢
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多