Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

fsockopen - передача параметров через $_GET и $POST

43K
14 ноября 2008 года
Keanor
5 / / 14.11.2008
Мысль простая, сделать скрипт чтобы через него я мог под своим доменом сидеть на сайте "вконтакте".

Для начала сделал .htaccess
 
Код:
# Включаем возможности mod_rewrite
RewriteEngine On
# Создаем правила для разделов
RewriteRule ^(.*)$ index.php [L,QSA]


И сам файл который должен работать:
Код:
<?php
    session_start();
   
    //Ссылка на наш сайт
    $page = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
   
    //Ссылка на страницу которую будем клонировать на наш сайт
    $url=str_replace("domen.ru/vk/", "vkontakte.ru/", $page);
    if (!empty($_POST)) {
        $post_keys=array_keys($_POST);
        $posts=$post_keys[0]."=".$_POST[$post_keys[0]];
        for ($i=1;$i<sizeof($_POST);$i++) {
            //Таким образом проходим по всем элементам $_POST и добавляем их в переменную а затем в заголовок
            $posts.="&".$post_keys[$i]."=".$_POST[$post_keys[$i]];
        }
       
        //Заголовок
        $query="POST ".$url." HTTP/1.0\r\n".
            "Referer: ".$url." \r\n".
            "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n".
            "Host: vkontakte.ru\r\n".
            "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n".
            "Accept-Language: ru,en;q=0.9\r\n".
            "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n".
            "Proxy-Connection: close\r\n".
            "Content-Type: application/x-www-form-urlencoded\r\n".
            "Content-Length: ".strlen($posts)."\r\n\r\n".
        $posts."\r\n\r\n";
       
        $socket=fsockopen('vkontakte.ru',80,$errno,$errstr,60); //Посылаем заголовки
        fwrite($socket,$query);                
        while(!feof($socket)) $vk.=fgets($socket)."<hr>";   //Считываем ответ
        fclose($socket);
        $arr = explode("<hr>", $vk);    //Эти телодвижения нужны для получения cookies
        $cookies=array();      
        for ($i=0;$i<sizeof($arr);$i++) {
            if (preg_match("/Set-Cookie:/i", $arr[$i])) {
                $cookies[sizeof($cookies)]=$arr[$i];    //Возможно немного громоздко но я пока только так умею
            }
        }
        $s=serialize($cookies);
        session_register("s");
    } else {
   
        //Проблема начинается где-то ниже, так как методом $_POST все передается и работает как надо.
        if (!empty($_SESSION['s'])) {
            $cookies=unserialize($_SESSION['s']);
            $cookies=implode("\r\n", $cookies)."\r\n";
        } else {
            $cookies="";
        }
        $gets="";
        $url = explode("?", $url);
        $url = $url[0];
        if (empty($url[1])) {
            $gets_keys=array_keys($_GET);
            $gets=$gets_keys[0]."=".$_GET[$gets_keys[0]];//так-же как в $_POST
            for ($i=1;$i<sizeof($_GET);$i++) {
                $gets.="&".$gets_keys[$i]."=".$_GET[$gets_keys[$i]];
            }
        }
       
        //Заголовок
        $query="GET ".$url." HTTP/1.0\r\n".
            "Referer: ".$url." \r\n".
            "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n".
            "Host: vkontakte.ru\r\n".
            "Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n".
            "Accept-Language: ru,en;q=0.9\r\n".
            "Accept-Charset: windows-1251, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\r\n".
            "Proxy-Connection: close\r\n".
            $cookies.
            "Content-Length: ".strlen($gets)."\r\n\r\n";
       
        //посылаем
        $socket=fsockopen('vkontakte.ru',80,$errno,$errstr,60);
        fwrite($socket,$query);
        while(!feof($socket)) $vk.=fgets($socket)."<hr>";
        fclose($socket);
    }
    $text = str_replace("vkontakte.ru", "domen.ru/vk", $vk);
    echo $text;
?>


Смысл кода не сложный, вроде бы и реализовать не сложно, но всетаки я немного запутался с $_GET - уважамые форумчане, помогите найти ошибку.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог