Новинки
Все новинки
Комплект "Осень." Стол с большим пеналом, стул - мягкий.
Скидка 20%
Новинка
1 899
руб.
1 519,2
руб.
выгода 379,8 руб. или
20
%
Комплект "Маша и медведь. Азбука 3".Стол с большим пеналом, стул - мягкий.
Скидка 20%
Новинка
2 250
руб.
1 800
руб.
выгода 450 руб. или
20
%
Комплект мебели  "Азбука 1", серия "Фиксики". Стол с малым пеналом, стул  с мягким сиденьем (от 1,5 до 3 лет)
Скидка 20%
Новинка
1 690
руб.
1 352
руб.
выгода 338 руб. или
20
%
Скидка!
Все товары со скидкой
Комплект "Маша и медведь. Азбука 2".Стол с большим пеналом, стул - мягкий.
Скидка 20%
2 250
руб.
1 800
руб.
выгода 450 руб. или
20
%
Комплект "Маша и медведь. Азбука 3".Стол с большим пеналом, стул - мягкий.
Скидка 20%
Новинка
2 250
руб.
1 800
руб.
выгода 450 руб. или
20
%
Комплект "Маша и медведь. Английская азбука." Стол с большим пеналом, стул - мягкий.
Скидка 20%
2 250
руб.
1 800
руб.
выгода 450 руб. или
20
%
Ваш город - Ижевск,
угадали?
Перейти на мобильную версию сайта
Да, перейти Остаться на основной версии

/*
Поместите файл ClickFrogServerSide.cs в папку App_Code в корне вашего сайта. 
На все целевые страницы необходимо добавить вызов метода который отправит запрос ClickFrogServerSide.SendData(Request); 

*/

using System;
using System.Collections.Generic;
using System.Web;
using System.Net;
using System.Text;
using System.IO;
using System.Threading;


public class ClickFrogServerData
{
    public HttpWebRequest Request { get; set; }
    public string Post { get; set; }
}

public static class ClickFrogServerSide
{
    private static string BuildRequest(HttpRequest UserRequest)
    {
        try
        {
            string[] headers = new string[] { "HTTP_HOST", "REMOTE_ADDR", "REQUEST_METHOD", "REQUEST_URI", "PATH_INFO", "HTTP_REFERER", "HTTP_X_FORWARDED_FOR", "QUERY_STRING" };
            StringBuilder post = new StringBuilder();

            foreach (string header in headers)
            {
                if (UserRequest[header] != null)
                {
                    post.Append(string.Format("\"{0}\":\"{1}\",", header, UserRequest[header]));
                }
            }

            return "header=" + HttpUtility.UrlEncode("{" + post.ToString().Substring(0, post.Length - 1) + "}");
        }
        catch
        {
            return null;
        }
    }

    public static void SendData(HttpRequest UserRequest)
    {
        if (UserRequest["REQUEST_METHOD"] != null && UserRequest["REQUEST_METHOD"] == "GET")        
        {
            string postData = BuildRequest(UserRequest);
            if (postData != null)
            {
                SendRequest(postData);
            }
        }
    }

    private static void SendRequest(string PostData)
    {
        ClickFrogServerData clfgdata = new ClickFrogServerData();
        clfgdata.Request = (HttpWebRequest)WebRequest.Create("http://stat.clickfrog.ru/server_side_action.php");
        clfgdata.Post = PostData;        
        clfgdata.Request.Method = "POST";
        clfgdata.Request.ContentType = "application/x-www-form-urlencoded";
        clfgdata.Request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), clfgdata);        
    }

    private static void GetRequestStreamCallback(IAsyncResult asyncResult)
    {        
        try
        {
            ClickFrogServerData clfgdata = (ClickFrogServerData)asyncResult.AsyncState;
            HttpWebRequest request = clfgdata.Request;
            Stream postStream = request.EndGetRequestStream(asyncResult);
            byte[] bytes = Encoding.UTF8.GetBytes(clfgdata.Post);
            postStream.Write(bytes, 0, bytes.Length);
            postStream.Close();
            //get response
            request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
        }
        catch { }
    }

    private static void GetResponseCallback(IAsyncResult asyncResult)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseStr = streamRead.ReadToEnd();

            streamResponse.Close();
            streamRead.Close();
            response.Close();
        }
        catch { }
    }
}