PHP: $mess = "phone=" . $_POST['phone'] . "&message=" . $_POST['message'] . "&message_length=0&hash=" . $_POST['hash'] . "&code=" . $_POST['code']; $user_agent = "Mozilla/4.0 (compatible MSIE 5.01; Windows NT 5.0)"; $refer = "http://www.megafondv.ru/prim/sms/"; $site = "http://www.megafondv.ru/prim/sms/post/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $site); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $mess); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch); curl_close($ch); В ответ просто пустая страница. Если делать путем PHP: $info = curl_exec($ch); curl_close($ch); echo $info то всегда выводится еденичка (1) А хотелось бы что-нибуть более интересное. как?
PHP: <? $mess = "phone=" . $_POST['phone'] . "&message=" . $_POST['message'] . "&message_length=0&hash=" . $_POST['hash'] . "&code=" . $_POST['code']; $user_agent = "Mozilla/4.0 (compatible MSIE 5.01; Windows NT 5.0)"; $refer = "http://www.megafondv.ru/prim/sms/"; $site = "http://www.megafondv.ru/prim/sms/post/"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $site); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $mess); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); $html = curl_exec($ch); // Результат в переменную curl_close($ch); ?> Тогда HTML-код будет в переменной $html. PHP: <? $info = curl_exec($ch); curl_close($ch); echo $info ?> Не совсем понял верхний кусок кода, если он не полный привидите полный, иначе нужно ставить CURLOPT_RETURNTRANSFER.
а иначе весь хтмл будет вываливаться в броузер. в бровзер вываливалась пустота, а в переменную еденичка. А проблема была в том, что надо было поставить опцию curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
Еще вопрос. обращаюсь к iis серверу (*.aspx). Там кодировка юникод утф8. Получаю инфу. В заголовках утф, в чарсете хтмла тоже утф. А броузер отображает каракули. При этом так же не передается русские буквы. Можно поменять в броузере тут же кодировку на утф и тогда все ок.
Встречные вопросы, ибо непонятно... 1. Инфа, которую ты получаешь, в какой кодировке приходит? UTF или что-то другое? 2. У твоей страницы (твоего скрипта) какая кодировка? Win1251? Если кодировки совпадают, проблемы быть не должно... а если нет - нужно перекодировать. Для этого можно воспользоваться функцией iconv().
да и в опере и в ие одно и тоже. кодировка в которой скрипт получает = утф, а в которой он это показывает мне = какая то кирилица. выходит надо кирилицу изменить на утф. щас попробую
перекодировал все: echo iconv("UTF-8", "WINDOWS-1251" ,trim($result)); впринципе все по русски, но не передаются русские буквы. Т.е. я удаленному скрипту отправляю русскую букву в одном поле, и не заполняю другое обязательное поле (код подтверждения). Тот удаленный скрипт, вылавливает ошибку (код подтверждения не совпадает), возвращает мне форму. но руские буквы не доходят (англ. буквы нормально доходят) все исправил. перед отправкой данных скрипту, кодирую все в утф, потом получаю и кодирую обратно в вин1251. Блин. ну надеюсь последний вопрос. Теперь проблема с куками и чеккодом. Допущение: чтобы тот скрипт смог проверить, правильно ли я ввел чеккод, он от меня еще запрашивает куку с каким то значение. PHP: if (!$_POST) { //получаю заголовок с кукой, составляю свою форму, показываю картинку с кодом. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "site.ru"); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); // мне важен только заголовок с кукой $result = curl_exec ($ch); curl_close ($ch); $start = "Set-Cookie: "; $end = "Connection:"; $st = strpos($result, $start); $cookie = substr($result, $st); $en = strpos($cookie, $end); $cookie = substr($cookie, 12, $en - 32); // получаю примерно такое значение: ASP.NET_SessionId=ml13or2yy21e2kvworygizis // а в действительности вся строчка: Set-Cookie: ASP.NET_SessionId=ml13or2yy21e2kvworygizis; path=/; $cookie = iconv("UTF-8", "WINDOWS-1251", $cookie); // незнаю для чего $final = "<form method=\"post\"></br> тут всякая ботва с полями <img src=site.ru/pic.aspx\" ></br> <input type=\"hidden\" name=\"cookie\" value=\"" . $cookie . "\"> <input type=\"submit\" value=\"Заслать\"> </form>"; echo $final; } else { // получили верхнюю форму $cookie = $_POST['cookie']; $cookie = iconv("WINDOWS-1251", "UTF-8", $cookie); // тоже незнаю для чего $mess = делаем мессадж из пришедших пост полей.; $site = "site.ru/form.aspx"; $mess = iconv("WINDOWS-1251", "UTF-8", $mess); //чтобы прошли русские буквы $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $site); curl_setopt($ch, CURLOPT_COOKIE, $cookie); // посылаем куку к картинке, что бы сервер мог ее проверить curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $mess); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); echo iconv("UTF-8", "WINDOWS-1251" ,trim($result)); // смотрим в нормальной кодровке что там ответил тот скрипт ?> в итоге ответ, что картинка не сходится. Т.е. проблема (имхо) или я банально неправильно набираю картинку (что врят-ли), или где то что то напутал с куками...