使用javascript验证网页

时间:2011-06-28 17:04:42

标签: javascript curl

我需要查看某个网页是否返回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";
}

1 个答案:

答案 0 :(得分:0)

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