Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Стартапы, проекты, идеи > post https curl данные отправляются не верно


Автор: leroy 12.7.2009, 16:05
Добрй день! Есть форма заказа товара которую граблю с забугорного сайта без изменений! единственно правлю acction на то чтобы уходил запрос на мой сайт, у себя делаю следующее 
$rst=''; 
foreach($_POST as $key=>$value)$rst.=($rst=='')?"$key=$value":"&$key=$value"; 
$url    =    'https://www.sitename.com/WPS/shoppingcart/Shoppingcart/ProcessOrder.asp'; 
$data    =    $crl->post($url,$rst); 
print($data); 
где $crl = new CURL(); 
 
следующий скрипт не мой нашел гдето в сети: 
class CURL { 
    var $callback = false; 
    var $cookiefile=''; 
function setCallback($func_name) { 
    $this->callback = $func_name; 
} 
 
function doRequest($method, $url, $vars) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
    curl_setopt($ch, CURLOPT_VERBOSE,1);//эксперимент 
    if(!empty($this->cookiefile)){ 
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookiefile); 
        curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookiefile); 
    } 
    if ($method == 'POST') { 
        curl_setopt($ch, CURLOPT_POST, 1); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); 
    } 
    $data = curl_exec($ch); 
    curl_close($ch); 
    if ($data) { 
        if ($this->callback) 
        { 
            $callback = $this->callback; 
            $this->callback = false; 
            return call_user_func($callback, $data); 
        } else { 
            return $data; 
        } 
    } else { 
        return curl_error($ch); 
    } 
} 
 
function post($url, $vars) { 
    return $this->doRequest('POST', $url, $vars); 
} 
} 
При этом всем в $data приходит 
HTTP/1.1 100 Continue Server: Microsoft-IIS/5.0 Date: Sun, 12 Jul 2009 11:07:30 GMT HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Sun, 12 Jul 2009 11:07:30 GMT Content-Length: 0 Content-Type: text/html Cache-control: private 
 
Что я так понимаю все ок, но данных мы вам не дали. 
Собственно, если делать все через браузер то поменяв http на https ничего не меняется все работает без изменений. Но при аналогичном запросе приходит еще раз сама форма с измененными коэфициентами.

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