繁体   English   中英

如何全面测试链接?

[英]How to fully test a link?

我当时用php在mySQL数据库中实现了一个非常简单的链接表,这个主意浮现在脑海:放置一个“测试”按钮,对所有存储的链接进行测试。

例如:

http://www.somebodysite.com/somesubdir/somefile.php?id=1

这是一个非常基本的链接,即使这样,也可能会发生很多错误:

  • www.somebodysite不再可用,他们没有付款
  • somesubdir被删除
  • somefile.php被重命名
  • ID已从数据库中删除

我猜很多事情无法远程检查,但其他事情可以。 我可以走多远? 我可以远程验证哪些链接元素?

对于前三项,可以使用get_headers()函数并检查响应代码是否为HTTP/1.1 200 OK

$response = get_headers('http://www.somebodysite.com/somesubdir/somefile.php?id=1');

$validCodes = array(
   'HTTP/1.1 200 OK',
   'HTTP/1.1 301 Moved Permanently',
   'HTTP/1.1 307 Temporary Redirect'
   // add more codes as you want
);

if (in_array($response[0], $validCodes))
{
   // It's ok
}
else
{
   // Something is wrong
}

但是要检查,是否已将给定的ID从数据库中删除,您必须知道somebodysite.com的所有者如何告诉您某些项目已被删除。 如果您知道哪个字符串显示在页面上并带有已删除项目,只需加载它并寻找它( stream_get_contents()在这里可能会有所帮助)。 真正的基本示例,因为我不太熟悉常规表达式:

$stream = fopen('http://www.somebodysite.com/somesubdir/somefile.php?id=1', 'r');
$pageSource = stream_get_contents($stream);

$isDeletedString = 'removed from database';

$isDeleted = strpos($pageSource, $isDeletedString);

if ($isDeleted === false)
{
   // Still there
}
else
{
   // Item was deleted
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM