Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > загрузка файлов на удаленный хостинг


Автор: Sarkaznik 22.9.2010, 02:21
Всем привет
Есть два разных сайта, на разных хостах.
1й сайт основной там же лежит общая БД
2й сайт некоторую информацию подгружает к себе удаленно из БД 1го сайта

задача такова:
у 1го сайта в админке есть возможность добавления статей + картинки,
вопрос как сделать так что бы у 2го сайта была возможность так же в админке добавлять теже статьи,
которые! удаленно падали бы в БД 1го сайта (текст не берем в расчет тут проблем нету)
проблема возникает как удаленно сидя в админке сайта 2 написав текст статьи, выбрав нужные картинки - загрузить их на хост сайта 1 ?

реально ли вообще удаленно загружать файлы на удаленный хост ?

з.ы. незнаю понятно ли объяснил задачу, поздно уже бошка не варит, но если вкратце то просто хочется сделать общую возможность двум сайтам работать с одной БД, а вернее что бы была возможность заполнения статей + картинки с двух разных сайтов, сайты полностью самописные.

Автор: Sanchezzz 22.9.2010, 08:50

Цитата

вопрос как сделать так что бы у 2го сайта была возможность так же в админке добавлять теже статьи,
которые! удаленно падали бы в БД 1го сайта (текст не берем в расчет тут проблем нету)
проблема возникает как удаленно сидя в админке сайта 2 написав текст статьи, выбрав нужные картинки - загрузить их на хост сайта 1 ?


ftp или пишем скрипт который принимает на сайте команду скачать файл с сайта 2 естественно проверка откуда запрос а то злоумышленник быстро воспользуется этой дырой...


Автор: IgorIV 22.9.2010, 19:16
Цитата(Sarkaznik @  22.9.2010,  03:21 Найти цитируемый пост)
незнаю понятно ли объяснил задачу

Вроде по-русски, но проблему так и не понял.

Автор: Sarkaznik 24.9.2010, 00:15
Цитата(Sanchezzz @  22.9.2010,  08:50 Найти цитируемый пост)
ftp или пишем скрипт который принимает на сайте команду скачать файл с сайта 2 естественно проверка откуда запрос а то злоумышленник быстро воспользуется этой дырой...


какой и злоумышленников имеется ввиду ?
оба сайта принадлежат одной компании, просто надо привлечь по больше рук что бы быстрее прошел процесс забивки инфы), но при этом минимизировать догадки манагеров что они не единственные кто забивает эти дурацкие блин статьи smile

Цитата(IgorIV @  22.9.2010,  19:16 Найти цитируемый пост)
Вроде по-русски, но проблему так и не понял. 

короче, имеется одна БД (на хосте сайта1)  у сайта1 есть админка в админке сидит манагер и забивает контент (забил текст в поле, через обзор загрузил картинки и т.д.) все замечательно ибо хост родной - все загружается как надо и картинки падают на хост как надо.
и
есть сайт2 - который подрубается к БД (сайта1) удаленно, выгружает к себе статьи забитые манагерами сайта1, все здорово...
терь вопрос !!!
как приманстрячить в админке сайта2 (она кстати идентичная как и у сайта1) загрузку тех же самых статей (что бы другие манагеры сидели и забивали тоже) при этом удаленное добавление текстов в БД сделать то легко, а как сделать так что бы удаленно падали картинки на FTP сайта1.

замуть в том что БД должна быть у сайтов одна, пополняться она должна с двух и возможно в будущем и более сайтов.


есть идея сделать страничку добавления статей и подргужать ее на сторонние сайты в инфлейме, но идея так себе и хочется понять если еще варианты ?

Автор: IgorIV 24.9.2010, 00:53
Ляпну, что в голову пришло.
Что если у второго сайта, в форме - action - поставить первый сайт?
action="http://site1"
Вообще, слов много, смысла мало.

Автор: Sarkaznik 24.9.2010, 02:22
Цитата(IgorIV @  24.9.2010,  00:53 Найти цитируемый пост)
Ляпну, что в голову пришло.
Что если у второго сайта, в форме - action - поставить первый сайт?
action="http://site1"
Вообще, слов много, смысла мало. 


иногда, а лучше по чаще, еще лучше всегда - думать, пытаться понять, а потом отвечать, а не тупо набивать посты...
для особо бронированных еще короче:
есть обычная форма аплоуда картинки, так вот обычно после выбора нужной картинки и нажав кнопку сохранить, файл падает в указанную дирикторию хоста, проблем нет если это родной хост, возможно ли так же положить картинку на удаленный хост... андестенд ?

Автор: IgorIV 24.9.2010, 07:07
анде - чего? smile
По-сути, Бд - на первом сайте, картинки на первом сайте, на втором у нас что? Только форма. Так почему не сделать action на первый сайт, пускай он и обрабатывает. Ты бы хоть попробовал ... Проблем я больше не вижу.

Автор: Sarkaznik 25.9.2010, 13:25
Цитата(IgorIV @  24.9.2010,  07:07 Найти цитируемый пост)
Так почему не сделать action на первый сайт, пускай он и обрабатывает. 

да изначально делать, то что не подходит, даже при том что это бы и сработало - не дело...

представим что БД лежит не на хосте сайта1 а скажем вообще отдельно в другом месте,
представим что сайт1 стайл не актуален и не нужен, а остальные сайты работают и подгружают инфу с БД...


з.ы. куда народ делся, раньше тут было куда интереснее сидеть...

Автор: enoff 25.9.2010, 14:57
Думаю, что люди уже заметили ответы, которые помогут решить проблему.
Цитата(Sanchezzz @  22.9.2010,  09:50 Найти цитируемый пост)
пишем скрипт который принимает на сайте команду скачать файл с сайта 2.


Цитата(IgorIV @  24.9.2010,  01:53 Найти цитируемый пост)
action="http://site1"

на форме site2.

Автор: IgorIV 26.9.2010, 22:39
Цитата(Sarkaznik @  25.9.2010,  14:25 Найти цитируемый пост)
представим что сайт1 стайл не актуален и не нужен, а остальные сайты работают и подгружают инфу с БД...

В таком случае где хранятся картинки? В БД?

Автор: Sarkaznik 27.9.2010, 00:25
Цитата(IgorIV @  26.9.2010,  22:39 Найти цитируемый пост)
В таком случае где хранятся картинки? В БД? 


картинки скажем продолжают лежать на хосте сайта1
но самого сайта может не стать, руководство порой быстро меняет приоритеты просто...

в общем если я правильно понял вариантов положить удаленно картинку на хост, нет, 
кроме высказанного выще, при условии что сайт1 будет фунциклировать ?

хочу переспросить, вариантов воообще в природе нету под данную задачу или просто особо никто не сталкивался ?

Автор: Sanchezzz 27.9.2010, 07:20
Скрипт 1 на сайте 1...

на одном сервере ты загружаешь файл как загрузил файл отправляешь потст команду другому серверу от сайта 1.
Код

<?
function post($url , $data = array()){
  $curl = curl_init();
  if(!$curl) print curl_errno($curl);
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_HEADER, 0);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  $str = curl_exec($curl);
  curl_close($curl);
  return $str;
}
//куда отправлять будем то?
$url = 'Сайт2/адрессскрипта_который_принемает_файл!!!';
print = post($url , array('file_url' => 'ссылка на файл с сайта_1 http://сайт1/upload/ФАЙЛ.zip') );  //ответ мы получем в виде "Файл загружен на сайт 2"
?>

я бы добавил еще пасс и логин как это положено =).

Скрипт 2 на сайте 2...
Код

<?
if(!empty($_POST['file_url'])):
//название сайта_2 
$root = "http://сайт2/";

//Мне леь писать регулярки я на это дело ленив (((
//Но русская сообразительность подсказала мне мысль сделать у двух сайтах такие же папки хранения файлов 

$post_file_name = $_POST['file_url']; // принемаем откуда скачать файл.


$new_file_name  = str_replace($_POST['file_url'] , ' http://сайт1/' , $root );  //в результате получем ссылку http://сайт2/upload/ФАЙЛ.zip

//Сохраним все.
$fp2  =  fopen  ( $new_file_name ,  "w" );  
$contents=file_get_contents($post_file_name); 
fwrite($fp2, $contents);  
fclose($fp2);
print 'Файл загружен на сайт 2';
endif;
?>


ПС код может быть немного нерабочим писал на коленках.

Автор: Sarkaznik 27.9.2010, 22:05
Sanchezzz,  вот эта тема ближе к телу, буду проверять, суть вроде ясна, спасибо!!!
отпишу чуть позже что вышло))

Автор: IgorIV 27.9.2010, 23:09
А в чем разница между браузером и курлом, в деле отправки формы?

Автор: Sanchezzz 28.9.2010, 06:30
Цитата(IgorIV @ 27.9.2010,  23:09)
А в чем разница между браузером и курлом, в деле отправки формы?

это действия после того как пользователь загрузил файл на сайт 1 и с которого должен файл отправится на сайт 2.

в курлах нет разнице все зависит от тебя как ты их настроишь мне просто их удобно использовать  нежели  сокеты. (что есть то и использую)...

Автор: IgorIV 28.9.2010, 19:36
Sanchezzz, а почему сразу не отправить файл на место?

Автор: Sanchezzz 29.9.2010, 06:54
IgorIV,  можно.

Код

  $post = array( 
        "file_box"=>"@". $_SERVER['DOCUMENT_ROOT']."/path/to/myfile.jpg",  // путь на сервере...
    ); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 



@ - обязательна иначе он подумает что эта строка а не файл.

Автор: IgorIV 29.9.2010, 18:46
Ты меня не понял, я тебя не понял. На том и разошлись ...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)