Нужна помощь с cURL

Статус
В этой теме нельзя размещать новые ответы.

monz

Создатель
Регистрация
24 Авг 2009
Сообщения
37
Реакции
0
Начал изучать cURL и столкнулся с такой проблемой.
Здесь код обрезан, также оставил только, то что нужно для наглядности. Есть две фунции:
Первая парсит параметр А.
Вторая отправляет пост запрос с параметром А и Б.
Параметры А и Б меняются при каждой загрузке страницы.
(Также параметр Б вводиться вручную. После чего он отправляется вместе со спарсеным параметром А).
PHP:
function register1()
{
$ch = curl_init(); // Инициализируем сессию
curl_setopt($ch, CURLOPT_URL,"http://test.com"); // задаем адрес формы
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Результат нам нужно вернуть в переменную, а не на экран
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам
// Выполняем запрос
$result = curl_exec($ch);
echo $result;
preg_match('#<INPUT type="hidden" name="a_" id="a_" value="([0-9]{1,})#i',$result, $a);
echo "Получаем первый раз: $a[1]";

$result = curl_exec($ch);
curl_close ($ch); // Закрываем сессию
return $a; // Возвращаем добытый ключ
}
function register2($a, $b)
{
$post="http://test.com/register/?a=register&a_=".$a."&applyinvid=&b_=".$b.";
$url = "http://test.com/";
$ch = curl_init(); // Инициализируем сессию
curl_setopt($ch, CURLOPT_URL,$url); // задаем адрес обработчика формы
curl_setopt($ch, CURLOPT_POST, 1); // Указываем, что нам нужно отправить POST-запрос
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Передаем POST-параметры
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Результат нам нужно вернуть в переменную, а не на экран
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // Переходить по редиректам
$result = curl_exec($ch);

preg_match('#<INPUT type="hidden" name="a_" id="a_" value="([0-9]{1,})#i',$result, $a);
echo "Получаем второй раз: $a[1]";

curl_close ($ch); // Закрываем сессию
return true;
}
if(!empty($_GET['b']))
{
//Как только получили с рег1 параметр "а" и ввели "b" запускаем рег2, где снова инициализируется сессия, в которой эти два параметра уже поменялись. !Соответственно отправляется пост запрос с данными из прошлой загрузки страницы.
register2($_GET['a'], $_GET['b']));
}
else
{
// Если параметр "b" не введен, инициалицизуем рег1, достаем оттуда "а" и вводим "b"
$a = register1();
$form = 'Введите параметр "b"
	<form method="get">
	<input type="hidden" name="a" value="'.$a.'">
	<input type="text" name="b">
	<input name="submit" type="submit" class="btn" value="зарегистрироваться"></form>';
	echo $form;
}
Как видим суть проблемы в том, что мы спарсили со страницы парметры А и Б, после чего $_GET['b'] стало не пустым и выполянеться фунция register2(), в которой заново проходит инициализация страницы и парметры А и Б меняют свои значения. но на вход мы получили старые значения и соответственно пост запрос не проходит.
Помогите плиз как можно исправить проблему
 
Ты сам хоть понял что объяснил? И зачем было обрезать код на preg_match?

Может ты хотел
PHP:
if(empty($_GET['b']))
 
Ты сам хоть понял что объяснил? И зачем было обрезать код на preg_match?
Может ты хотел
PHP:
if(empty($_GET['b']))

Нет, здесь нужно именно !empty, тоесть если переменная НЕ пустая - также мы ввели данные с формы и выполняется функция, иначе рисуется форма и ожидается ввод.
 
Нет, здесь нужно именно !empty, тоесть если переменная НЕ пустая - также мы ввели данные с формы и выполняется функция, иначе рисуется форма и ожидается ввод.
PHP:
Ну а в чем проблема, делаешь либо 
if(isset($_GET['value']) {
//твоя функция на которую поступил get запрос
}
//А тут поле формы.
Когда отправляешь форму переменная начинает существовать и выполняется скрипт.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху