Регистрация
Вход через соцсети
Восстановление пароля

Занесение данных в компоненту через add.php из другой страницы с помощью curl

Новый топик
03.04.2013, 21:32
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Создал страницу с php кодом, которая берет данные из другой страницы и вставляет полученные данные в определенную компоненту. Данные берутся с помощью curl и посылаются методом post на страницу /netcat/add.php (также curl'ом). Разрешение на добавление в компоненту стоит для ВСЕХ.

Не получается послать данные и добавить запись в компоненте.

Код следующего содержания:

$ch = curl_init ("http://parsing.test1c.org/netcat/add.php");
curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0");
curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "admin_mode=FALSE&f_Checked=1&catalogue=14&cc=529&sub=371&posting=1&curPos=0&pname=zxc&pdescript=asd&pprice=89&pstock=12&pfreely=12&pimg=0");
$result = curl_exec($ch);
curl_close($ch); // закрываем соединение

В базу ничего не записывается.
echo $result - выдает страницу авторизации netcat

Подскажите, как записать данные в компоненту через add.php через php код?
03.04.2013, 22:13
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

а права у вас какие стоят?
все юзеры могут добавлять запись или только авторизованные?

Temet nosce...
04.04.2013, 17:15
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Разрешение на добавление в компоненту стоит для ВСЕХ.

Да, разрешения стоят для всех на все.
04.04.2013, 18:45
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Может быть я не посылаю через post какую-то важную переменную и поэтому данные не добавляются в базу и netcat воспринимает этот post запрос, как что-то инородное?
04.04.2013, 20:16
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Есть кое-какие продвижения:

$ch = curl_init ("http://parsing.test1c.org/netcat/add.php");
curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0");
curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1);
curl_setopt($ch, CURLOPT_REFERER, "http://parsing.test1c.org/");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

//Исправлена строка ниже. Убрал переменную $admin_mode.
curl_setopt($ch, CURLOPT_POSTFIELDS, "catalogue=14&cc=529&sub=371&posting=1&pname=zxc&pdescript=asd&pprice=89&pstock=12&pfreely=12&pimg=0");

$result = curl_exec($ch);
curl_close($ch); // закрываем соединение

База данных заполняется, но только строки $cc и $sub. Остальные строки $pname, $pdescript и т.д. заполняются НУЛЕВЫМИ значениями.
04.04.2013, 22:30
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
curl_setopt($ch, CURLOPT_POSTFIELDS, "catalogue=14&cc=529&sub=371&posting=1&f_pname=zxc&f_pdescript=asd&f_pprice=89&pstock=12&f_pfreely=12&f_pimg=0");


Temet nosce...
08.04.2013, 16:51
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Да, спасибо. Все получилось после добавления буквы f_ перед названием переменной.
НО! Не закачиваются файлы.
f_pimg='@D:/1.jpg'
и
f_pimg='@D:\1.jpg'
не закачивает файл.
Вообще, при этом ни одна запись не добавляется.
08.04.2013, 22:35
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
Не закачиваются файлы.

CURLOPT_INFILESIZE - не пробовали указывать?

Temet nosce...
10.04.2013, 20:49
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Понял в чем было дело. Файлы не закачивались, потому что PHP скрипт выполнялся на хостинге, а я пытался указывать файл на своем локальном компьютере.
Если указать файл, находящийся на хостинге, то все отрабатывается без проблем.

Хотелось бы указать ссылку на файл вида - "http://.../1.jpg"
Но, к сожалению, пока не получается.
Может быть есть способ это сделать?
12.04.2013, 22:28
Ответить | Цитировать
Рамиль

Зарегистрирован:
2012-10-12
Сообщений: 10

Пока нашел только этот способ:

Код:

//Скачивание картинок
$pimg = 'http://abcd.ru/1.jpg';
//заносим в переменную $f содержимое необходимой картинки
$f = file_get_contents($pimg);
//вырезаем название файла картинки из полного пути
preg_match ("/([A-z0-9\-\_\s]*\.jpg)|([A-z0-9\-\_\s]*\.png)|([A-z0-9\-\_\s]*\.gif)/", $pimg, $img_name);
//добавляем полный путь для сохранения файла картинки
$img_name = '/home/xyz123/netcat_files/371/529/temp/' . $img_name[0];
//сохраняем картинку в файл во временную папку
file_put_contents ($img_name, $f);

...

//заносим в переменную полный путь до файла картинки, добравляя вначале знак @. Эта переменная будет отправлена на /netcat/add.php
'f_pimg' => '@' . $img_name
198 196 2013-04-12 22:28:29 12988
Описание проекта