Задать вопрос
  • Отправка формы заполненной пользователем через curl, какое минимальное кол-во шагов?

    @MikeHail
    Если на другой сайт передаётся через GET то используйте JSONP.
    А так вот вам код, похожее уже делал. Ничего мудрёного.
    <?php
    if (!empty($_POST)) {
    	$curl = curl_init(); //инициализация сеанса
    	curl_setopt($curl, CURLOPT_URL, 'https://'); //урл сайта к которому обращаемся
    	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
    	curl_setopt ($curl, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");
    	curl_setopt($curl, CURLOPT_HEADER, 0); //выводим заголовки
    	curl_setopt($curl, CURLOPT_POST, 1); //передача данных методом POST
    	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //теперь curl вернет нам ответ, а не выведет
    	curl_setopt($curl, CURLOPT_POSTFIELDS, //тут переменные которые будут переданы методом POST
    		array (
    			'a'=>@$_POST['a'],
    			'b'=>@$_POST['b'],
    			'c'=>@$_POST['c'],
    			'd'=>@$_POST['d'],
    				'searchButton'=>'get' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
    				));
    	curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0'); //эта строчка как-бы говорит: "я не скрипт, я огнелис" :)
    	curl_setopt ($curl, CURLOPT_REFERER, "https://"); //а вдруг там проверяют наличие рефера
    	$res = curl_exec($curl);
    	//если ошибка то печатаем номер и сообщение
    	if(!$res) {
    		$error = curl_error($curl).'('.curl_errno($curl).')';
    		echo $error;
    	}
    	else {
    		header('Content-type: text/html');
    		$search = array('"[', '\"'); //говнокод
    		$replace = array('[', '"'); //говнокод
    		$replacePairs = array_combine($search, $replace);
    		echo strtr($res, $replacePairs);
    		curl_close($curl);
    	}
    }
    ?>

    $('#to').on('submit', function() {
    				var e = $(this),
    				caption = $('button', e).html(),
    				loader = $('button', e).attr('data-loader');
    				$('button', e).attr('disabled', 'disabled').html(loader);
    				$(".tool_result", e).html('');
    				$.ajax({
    					type: "POST",
    					url: "./2.php",
    					dataType: 'json',
    					data: e.serialize(),
    					success: function(c) {
    						$('button', e).removeAttr('disabled').html(caption);
    						if(typeof c.err !== "undefined") {
    							$(".tool_result", e).html('<div class="message error mini">' + c.err + '</div>')
    						} else {
    							var d = ['1', '2', '3', '4', "5"],
    							res = '<table><thead><tr><th>' + d[0] + '</th><th>' + d[1] + '</th><th>' + d[2] + '</th><th>' + d[3] + '</th>';
    							if(c[0][5] != "") res += '<th>' + d[4] + '</th>';
    							res += '</tr></thead>';
    							$.each(c, function(a, b) {
    								res += '<tr><td data-label="' + d[0] + '">' + b[1] + '</td><td data-label="' + d[1] + '">' + b[3] + '</td><td data-label="' + d[2] + '">' + b[4] + '</td><td data-label="' + d[3] + '">' + b[2] + '</td>';
    								if(c[0][5] != "") res += '<td data-label="' + d[4] + '">' + b[5] + '</td>';
    								res += '</tr>'
    							});
    							res += "</table>";
    							$(".tool_result", e).html(res)
    						}
    					}
    				});
    				return !1
    			});

    <div id="too">
    			<form id="to" method="post" name="to">
    				<div class="fc">
    					<label>a</label>
    					<div class="wi">
    						<input type="text" id="a" name="a" placeholder="">
    					</div>
    				</div>
    				<div class="fc">
    					<label>b</label>
    					<div class="wi">
    						<input type="text" id="b" name="b" placeholder="">
    					</div>
    				</div>
    				<div class="fc">
    					<label>c</label>
    					<div class="wi">
    						<input type="text" id="c" name="c" placeholder="">
    					</div>
    				</div>
    				<div class="fc">
    					<label>d</label>
    					<div class="wi">
    						<input type="text" id="d" name="d" placeholder="">
    					</div>
    				</div>
    				<div class="wrap-btn"></div>
    				<button class="button" name="submit" data-loader="Проверка...">ПРОВЕРИТЬ</button>
    				<div class="wrap-btn"></div>
    				<div class="tool_result"></div>
    			</form>
    		</div>
    Ответ написан
    2 комментария