Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Динамически получить страницу


Автор: kapusta 11.3.2006, 11:44
Задача такая. Пользователь открывает мою страничку.
Надо отправить запрос некоторому скрипту, находящемуся на другом сервере. Тот скрипт просто проверяет, установлены ли на компьютере пользователя кукисы того самого другого серва. Если все ок и кукисы стоят, то URL принимает вид http://server/?validated=1 , или =0 в противном случае.
Как все это произвести? Как от юзера открыть ту страничку, далее пропарсить полученный URL и получить результат проверки?

Автор: Ciber SLasH 11.3.2006, 19:38
А каким образом твой вопрос относится к JS ?
Тебе нужно в разделы серверных ЯП.

Автор: kapusta 11.3.2006, 21:57
Не уверен, что серверных. Проблема в чем. Загружается веб-страница и только она может получить доступ к свои кукисам. Если я через серверный какой-либо ЯП загружу ту страницу, то она ведь никак не сможет добраться до кукисов юзера. А именно это она и должна сделать и на основании их данных выдать некоторый результат, который дальше нужно отобразить на моей странице.

Автор: 12345c 12.3.2006, 04:35
Куки отправляются с любым запросом к другому серверу. Без использования JS. Он должен принять (session)_id пользователя и ждать, не придёт ли запрос от первого сервера. Первый шлёт запрос, второй выдаёт результат проверки наличия.

Т.е., в странице должен стоять фрейм с запросом пустой страницы на 2-й сервер и ещё фрейм или XMLHttprequuest с опросом.

Далее, вижу, идёт простой вопрос, поэтому Вам нужен готовый пример. Кто-нибудь его напишет, а общими словами отвечать не буду.

Автор: kapusta 12.3.2006, 19:10
Вопрос вполне очевиден. Очень хотелось бы увидеть хоть какой пример иллюстрирующий сказанное. smile

Автор: Ciber SLasH 14.3.2006, 12:49
Если я правильно понял, то ты хотел что-то такое:
index.php:
Код

<?php
setcookie("local_cookie", "test", time()+10);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>PHP+JavaScript :: Отправка локальных данных [XmlHttpRequest]</title>
<script type='text/javascript'>
/**
* Отправка запроса
*
* @param1 string url — куда будем отсылать запрос
* @param2 array aData — массив передаваемых данных
**/
function sendQuery(url, aData) {
var is_IE = false;
var XmlHttp;
    /** Обработка ответа **/
    function parseRequest() {
        if (XmlHttp.readyState == 4) {
            if (XmlHttp.status == 200) {
                if (parseInt(XmlHttp.responseText) == 1) {
                    location += "?valid=1";
                } else {
                    location += "?valid=0";
                }
            }
        }
    }
    ////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    if (window.XMLHttpRequest) {        // Mozilla
        try {
            XmlHttp = new XMLHttpRequest();
        } catch (e) {
            XmlHttp = false;
        }
    } else if (window.ActiveXObject) {    // IE
        try {
            XmlHttp = new ActiveXObject("Msxml2.XMLHTTP.4.0");
        } catch (e) {
            try {
                XmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {
                    XmlHttp = false;
                }
            }
        }
        is_IE = true;
    }
    if (XmlHttp) {
        if (is_IE) XmlHttp.onreadystatechange = parseRequest;
        else XmlHttp.onload = parseRequest;
        XmlHttp.open('POST', url, true);
        if (aData) {
            var query = "";
            for (var i = 0; i < aData.length; i++) {
                query += "data[]="+aData[i]+"&";
            }
            query = query.substr(0, query.length-1);
            XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            XmlHttp.send(query);
        } else XmlHttp.send(null);
        return true;
    } else return false;
}
</script>
</head>

<body>
<script type='text/javascript'>
if (location.search.indexOf("?valid=") == -1) {
    sendQuery("http://localhost/test.php", [document.cookie]);
}
</script>
</body>
</html>

test.php:
Код

<?php
$fp = fopen('./logs.htm', 'w');
$content = '<pre>'.print_r($_POST, true).'</pre>';
fwrite($fp, $content);
fclose($fp);
$data = $_POST['data'];
if (!empty($data[0]) && strpos($data[0], "local_cookie") !== false) {
    echo 1;
} else {
    echo 0;
}
?>

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)