проверка веб-страницы с помощью JavaScript - PullRequest
0 голосов
/ 28 июня 2011

Мне нужно выяснить, возвращает ли страница код состояния 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 голосов
/ 28 июня 2011

Похоже на простой случай создания прокси-скрипта PHP.Функция, которая проверяет URL, может (в случае успеха) вызывать функцию AJAX для скрипта PHP, передавая URL, чтобы вы могли сделать запрос cURL к нему.Вместо того, чтобы напрямую пинговать веб-сайт, вы можете использовать поиск DNS.По завершении PHP-скрипта вы можете вернуть какую-то ценность / данные в функцию AJAX, которая может действовать соответствующим образом на странице.Скорее всего, вам нужно будет использовать обратные вызовы на стороне клиента и сервера, чтобы не повесить страницу, если это не предпочтительнее, чем переходить с остальной частью формы.Ваш звонок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...