|
|
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

Зарегистрирован: 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

Зарегистрирован: 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

Зарегистрирован: 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
|