【问题标题】:validating a webpage with javascript使用 javascript 验证网页
【发布时间】:2011-06-28 17:04:41
【问题描述】:

我需要确定页面返回的是 404 还是 301 状态代码。我知道我可以编写一个 php 脚本来使用 cURL 返回一个值以供 javascript 读取,但我正在尝试简化该过程并且有点新。现在我有一个onBlur 函数,可以确保网页在离开现场之前至少是正确的格式。但我希望它也可以检查页面的状态,我似乎找不到直接将 cUrl 与 javascript 一起使用的解决方案或任何有关如何完成此操作的示例。有人愿意帮助我吗?这是我在页面上调用的 validate.js...

function loadXMLDoc() {
    var url = document.getElementById("webpage_url").value;
    var xmlhttp;
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("valid").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "custom/modules/CT221_SEP_test/js/curltest.php/" + url, true);
    xmlhttp.send();
}

function isURL() {
    var url = document.getElementById("webpage_url");
    var urlerr = document.getElementById("url_error");
    var reg = /http:\/\/[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/;
    if (!reg.test(url.value)) {
        urlerr.innerHTML = "Invalid WebPage Address";
        url.focus();
    } else {
        loadXMLDoc();
        urlerr.innerHTML = //calls success image";
    }
}
YAHOO.util.Event.on("webpage_url", "blur", isURL);

然后我的 curltest.php 文件看起来像这样......

$url = $_GET['url'];

function validateurl($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($ch);
    curl_close($ch);
    preg_match("/HTTP\/1\.[1|0]\s(\d{3})/", $data, $matches);
    return $matches[1];
}
$code = validateurl($url);
if ($code != "404") {
    echo "Webpage is valid";
} else[
echo "Webpage is not live";
}

【问题讨论】:

标签: javascript curl


【解决方案1】:

听起来像是一个创建 PHP 代理脚本的简单案例。验证 URL 的函数可以(成功时)向 PHP 脚本调用 AJAX 函数,传递 URL,以便您可以向它发出 cURL 请求。您可以选择使用某种 DNS 查找,而不是直接 ping 网站。在您的 PHP 脚本完成后,您可以将某种值/数据返回给 AJAX 函数,该函数可以在页面上进行相应的操作。您可能需要在客户端和服务器端使用回调以避免挂起页面,除非这比他们继续处理表单的其余部分更可取。您的来电。

【讨论】:

  • 我有一个调用 curl 并返回状态码的 php 脚本,但我不确定从那里做什么。或者如何使用 onBlur 函数调用该 php 脚本。
  • 您知道如何使用 AJAX 设置回调吗?你看看一些教程。基本上,您需要确定该状态代码是否对您有用。基本上,如果不是 200,你可以回显/'返回'成功,否则你会回显/'返回'失败。这将作为 XmlHttp Requests responseText 属性的一部分返回到您的页面。根据 responseText 的值,你可以在页面上做一些事情。可以在这里找到基础知识:w3schools.com/ajax/default.asp
  • 好吧,我比以往任何时候都更迷茫,你有什么办法可以给我一个简单的例子吗?我有一个调用 cRUL 并检查页面并返回状态代码的 php 脚本 return $matches[1];但是我如何获取该变量然后使用它来做某事呢?
  • 我已经为您提供了概述和链接。您需要使用 AJAX。 AJAX 是一种使用 Javascript 发出请求的技术。您可以向发出 cURL 请求的脚本发出请求,并通过 GET 或 POST 将 URL 传递给它。脚本执行,并返回一个状态码。您回显代码或响应将返回到发出 AJAX 请求的函数,该函数位于 .responseText 中。然后你可以根据页面上的响应做一些事情。我建议对 AJAX 进行基本的 Google 搜索,并回复一些代码尝试,以便我们为您提供更多帮助。
  • 这些 cmets 限制了我的字符数,所以我无法发布我已经拥有的代码,这是行不通的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多