Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.12.2012, 20:10
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Автозаполнение формы php
Доброго времени суток!
У меня есть задача научить php скрипт совершать внутренние переводы (с моего счета на счет другого человека) в qiwi, все бы хорошо но они выдают каждому переводу номер транзакции(как все).
Сразу после нажатия на кнопку отправить httpfox палит ссылку на state.action в который отправляют сумму номер телефона и номер транзакции, следовательно номер транзакции присваевается в скрипте который находится на одной страничке с формой
(https://w.qiwi.com/payment/transfer/form.action)
получается мне сразу туда гетом отправлять номер и сумму? Если да то как? а то я с php не очень дружу, документацию и статейки по curl читал, но почти ничего не понял




Все, заполнять получается но отправлять пока нет, оказывется уникальный номер транзакции генерится для кнопки "отправить" при каждом обновлении странички и его можно подглядеть в исходниках странички, но как вырвать его и перенести в запрос не понимаю

<button>data-params="{"data":{"state":"CONFIRM","t":"-3750918538008430731","protected":"true"}}"</button>

вот так выглядит кнопка, мне нужно забирать вот это "t":"-3750918538008430731"
__________________
Научу себя плохому

Последний раз редактировалось l-liava-l, 24.12.2012 в 20:56.
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2012, 21:56
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

один из возможных cпособов манимупяляциями dom на серверной стороне это использование simple-dom.
Читаем описание на хабре. http://habrahabr.ru/post/114143/

Curl отвечает за эмуляцию поведения браузера а не пользователя. тоесть мы имитируем запросы браузера к серверной части, а не нажатие кнопок пользователем.

сорри, новый год снегурочки и и коньяк Подробности завтра, сегодня я уже в хлам
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 24.12.2012 в 22:07.
Ответить с цитированием
  #3 (permalink)  
Старый 24.12.2012, 22:43
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

DjDiablo,
ты красавчик!
ps
они не дают плюсануть(
__________________
Научу себя плохому
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2012, 13:08
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

Сообщение от DjDiablo
новый год снегурочки и и коньяк
бухаем!!! )
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2012, 13:21
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

возникла проблемка, когда я делаю запрос вот такого вида:
https://w.qiwi.com/user/payment/form/state.action?extra%5B%27account%27%5D=%2Bномер получателя&source=qiwi_RUB&amountInteger=сумма(рубли)&amountFraction=сумма(копейки)&currency=RUB&extra%5B%27comment%27%5D=&state=CONFIRM&t=номер транзакции (вырывю из dom)&protected=true

скрипт обрабатывающий запрос с радостью меня пропускает и просит подтвердить оплату, когда подтверждаю пишет 'техническая ошибка'
перехожу вроде от куда нужно. Может они как то по реферу проверяют?
__________________
Научу себя плохому
Ответить с цитированием
  #6 (permalink)  
Старый 25.12.2012, 13:29
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

хз, отсюда невидно
мож куки надо включить?

рефер обходится через
curl_setopt($curl, CURLOPT_REFERER, "url откуда якобы перешли");

есть ещё CURLOPT_AUTOREFERER.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 25.12.2012 в 13:51.
Ответить с цитированием
  #7 (permalink)  
Старый 25.12.2012, 17:04
Профессор
Отправить личное сообщение для l-liava-l Посмотреть профиль Найти все сообщения от l-liava-l
 
Регистрация: 14.03.2012
Сообщений: 1,808

Так, вот код я что то не догоняю видимо.

<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Content-Type: text/html; charset=utf-8");
header("Pragma: no-cache");

set_time_limit(0);
error_reporting(E_ALL);
define('ROOT', dirname(__FILE__).'/');

$cookie_filename = ROOT.'temp/'.uniqid(md5(time()), true).'.tmp';

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1');
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_filename);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_filename);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$phone = ''; //телефон он счета в виде 79180000007
$password = ''; //пароль от счета
$phoneClient = '';//телефон получателя в виде 79180000007
$t = '';// t оказывается просто генерируемая переменная, пока беру руками
$rub = '1';//сколько рублей
$cop = '00';//сколько копеек

curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com' );
curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/auth/login.action?source=MENU&login=%2B' .$phone. '&password=' .$password.'');//авторизация
$page = curl_exec($curl);



curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com/payment/transfer/form.action' );
curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/user/payment/form/state.action?extra%5B%27account%27%5D=%2B'.$phoneClient.'&source=qiwi_RUB&amountInteger='.$rub.'&amountFraction='.$cop.
'&currency=RUB&extra%5B%27comment%27%5D=&state=CONFIRM&t='.$t.'&protected=true');//отправка данных на скрипт обработчик с рефером формы
$page = curl_exec($curl);
curl_setopt($curl, CURLOPT_REFERER, 'https://w.qiwi.com/payment/state.action?state=CONFIRM&t='.$t.'&protected=true');
curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/payment/form/state.action?state=PAY&t='.$t.'');//вроде как эмуляция кннопки "подтвердить"
$page = curl_exec($curl);
curl_setopt($curl, CURLOPT_URL, 'https://w.qiwi.com/payment/main.action?refresh=true');//обновление главной
$page = curl_exec($curl);
print_r( $page );

@unlink($cookie_filename); 
curl_close($curl);
?>


t - оказывается просто переменная, а номер транзакции мы получаем при отправлении этого запроса
https://w.qiwi.com/payment/form/stat...n?state=PAY&t=
конечный запрос выглядит так:
https://w.qiwi.com/user/offer/show.a...ion=3521236456
По задумке скрипт должен после авторизации подавать признаки жизни, но он не хочет.
__________________
Научу себя плохому
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отключить автозаполнение полей формы в Firefox? jox1e (X)HTML/CSS 7 11.10.2017 00:29
отключить автозаполнение формы браузера udaff.es Элементы интерфейса 3 10.10.2017 17:48
Выпадающие списки формы + PHP Диман Общие вопросы Javascript 0 16.10.2012 22:08
PHP и элементы формы faiq Серверные языки и технологии 2 06.12.2009 07:04
load + php подгрузка формы Karandash jQuery 4 01.12.2009 13:04