За последние 24 часа нас посетили 50965 программистов и 1754 робота. Сейчас ищут 885 программистов ...

CURL, POST запрос, проблема с русскими смиволами

Тема в разделе "PHP для новичков", создана пользователем z668, 28 мар 2011.

  1. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Добрый вечер, есть скрипт следующего содержания:

    PHP:
    1. <?php
    2.  
    3. ////////////////////////////////////////////////
    4. $user = fopen("user.txt", "r");
    5. $fgets_u = fgets($user);
    6. $text = fopen("text.txt", "r");
    7. $fgets_t = fgets($text);
    8. ////////////////////////////////////////////////
    9.  
    10. ////////////////////////////////////////////////
    11. $url = "http://example.com/includes/ajax/message.php?opt=addpost";
    12. $postdata = "comment_message=". htmlentities(urlencode($fgets_t)) . "+&pid=" . $fgets_u;
    13. $referer = "http://example.com/index.php";
    14. $user_cookie_file = fopen("cookie.txt", "w");
    15. chmod("cookie.txt", 0777);
    16. $cookie_file = "cookie.txt";
    17. $ip = "192.168.12.12";
    18. ////////////////////////////////////////////////
    19.  
    20.  
    21. $ch = curl_init();
    22. curl_setopt($ch, CURLOPT_URL, $url);
    23. curl_setopt($ch, CURLOPT_USERAGENT,
    24.     'Internet Explorer/6.0 (X11; U; Windows XP SP2; en-US; rv:1.7.2) Gecko/20040804');
    25. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept-Language: ru,en;q=0.7,de-de;q=0.3',
    26.     'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
    27.     'X-Forwarded-For: ' . $ip));
    28. curl_setopt($ch, CURLOPT_REFERER, $referer);
    29. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    30. curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    31. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    32. curl_setopt($ch, CURLOPT_POST, 1);
    33. curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    34. $page = curl_exec($ch);
    35.  
    36. echo $page;
    37.  
    38. echo "<meta http-equiv=\"refresh\" content=\2; URL=http://example.ru/add_post.php\" /> ";
    При передаче post запроса возникла проблема, кирилические символы не передаются, латинские же передаются без ошибок. В чем может быть проблема?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    стоит озадачиться соответствием кодировок
     
  3. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Кодировка файлов windows-1251. Заголовки сервера:
    HTTP/1.1 302 Found Server: nginx Date: Sun, 27 Mar 2011 20:59:03 GMT Content-Type: text/html; charset=windows-1251 Connection: keep-alive X-Powered-By: PHP/5.1.6 Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: PHPSESSID=q6k0gbe2dt0klkbeiqre3b95i2; path=/ Location: http://example.com/ Content-Length: 5 small
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это очень все хорошо, но тут нет ничего, что говорило бы о кодировке, в которой ты посылаешь свои данные.
     
  5. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    каким образом можно узнать эту кодировку?
    p.s. кодировка самого скрипта windows-1251
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а обработчик ее в какой кодировке ждет? =)
     
  7. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    вот этого я к сожалению незнаю =( есть ли способ это выяснить?
    p.s. сайт на который скрипт отсылает post запрос в кодировке windows-1251
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну менять кодировки пока не получишь совпадение с ожидаемым тобою результатом.
     
  9. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    спасибо попробую
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй законвертить в utf8 через iconv. Я сомневаюсь что он в какой либо другой кодировке может ждать кроме как виндовой или utf. Ну может еще в кои8, но это уже маразм.
     
  11. z668

    z668 Активный пользователь

    С нами с:
    28 мар 2011
    Сообщения:
    15
    Симпатии:
    0
    Только что это проверил, кодировка как вы и говорили оказалась UTF-8. Спасибо =)
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768