Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Создание файла с одного сайта на другом (https://javascript.ru/forum/server/69424-sozdanie-fajjla-s-odnogo-sajjta-na-drugom.html)

Sonya 21.06.2017 14:16

Создание файла с одного сайта на другом
 
Здравствуйте, подскажите, пожалуйста, как решить такую задачу:
Есть два сайта на одном хостинге, как с одного сайта создать текстовый файл на другом? У обоих сайтов, естественно, один владелец.

laimas 21.06.2017 16:20

Цитата:

Сообщение от Sonya
Есть два сайта на одном хостинге, как с одного сайта создать текстовый файл на другом?

По HTTP или FTP протоколу.

Sonya 21.06.2017 17:14

По HTTP.

laimas 21.06.2017 17:49

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

//то что отправляется
$post = http_build_query(
    ['keyname' => 'Cодержимое данных']
);
//параметры отправления
$options = ['http' =>
    [
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded', //отправление текста
        'content' => $post
    ]
];
//контекст
$context = stream_context_create($options);
//отправление
file_get_contents('http://domain/script_name.php', false, $context);

//на принимающем домене по указанному адресу http://domain/ скриптом script_name.php принять
file_put_contents('name.txt', $_POST['keyname'])


Более подробно об опциях контекста читайте в руководстве.

Sonya 21.06.2017 17:53

Спасибо! А можно осуществить запись в txt с одного сайта на другом?

laimas 21.06.2017 18:01

Ну в руководстве о функции file_put_contents говорится же и о флагах, которые можно задать. Флаг FILE_APPEND позволяет при наличии файла дописывать новые данные в его конец. Если речь о чем-то более сложном, то только посредством сценария расширенного.

Sonya 21.06.2017 18:12

Можно примером, например,
$f=fopen('http:///другой_сайт.ru/texr.txt',"a");
fwrite($f, "информация");
fclose($f);

так не получается, не записывает.

laimas 21.06.2017 18:24

Цитата:

Сообщение от Sonya
так не получается, не записывает

"Создание файла с одного сайта на другом" ну никак не связать по смыслу с тем чего вы написали, не так ли?

Вы чего хотите?

Sonya 21.06.2017 18:29

Есть два сайта на одном хостинге, мне надо, чтобы с одного сайта информация записывалась на другой. Почему "Создание файла с одного сайта на другом", потому, что, если нет файла txt, то создать его, что в принципе и предусмотрено при записи, поэтому, как бы и то, и другое, к теме.

laimas 21.06.2017 18:42

Если есть домен А и домен В, при этом домен А ведущий, а домен В ведомый, то есть в момент времени Т домен А получает/обрабатывает/итд некую информацию, которую он должен сохранить на домене В. Этой концепции и соответствует заголовок вашей темы, как это делается по http было показано. К данной концепции никакие fopen() отношения не имеют.

Если домен А также владелец информации, но обязанность сохранения ее на домене В возлагается на него же, вот тогда на домене В file_get_contents(name, с домена А) или fopen(с домена А), и выполняется такое планировщиком задач.

file_put_contents('name.txt', $_POST['keyname'], FILE_APPEND) - создаст файл если не существует и запишет в него, иначе допишет в конец уже существующего.

То что вы изначально писали, а затем код, то это далеко не к одному и тому же.

Sonya 21.06.2017 18:52

Цитата:

К данной концепции никакие fopen() отношения не имеют
Так, поэтому и интересуюсь, если мой код ни к чему, то мне, как раз нужен тот который бы решал задачу, привела как пример, что это не работает.
Что касается планировщика, то он не подходит. Информацию вводит пользователь на сайте А, и она должна сразу же записываться на сайте Б.

laimas 21.06.2017 18:59

Цитата:

Сообщение от Sonya
Информацию вводит пользователь на сайте А, и она должна сразу же записываться на сайте Б.

Я вам полный код этого показал - код для сайта А, и код для сайта В (для него это одна строка всего, если обращение к скрипту, который только и делает это).

Sonya 21.06.2017 19:08

Да, спасибо буду разбираться. Здесь точнее должна происходить передача информация не вводимая пользователем, а информация, так сказать "служебная" - IP пользователя и его логин, которая происходит при определенных действиях пользователя.

Sonya 21.06.2017 19:19

Не могу поставить '+' к карме - надо его поставить ещё кому-то прежде, чем снова поставить Вам. А так получается, что только Вы отвечаете.

laimas 21.06.2017 19:21

Цитата:

Сообщение от Sonya
Здесь точнее должна происходить передача информация не вводимая пользователем, а информация, так сказать "служебная" - IP пользователя и его логин, которая происходит при определенных действиях пользователя.

Это не имеет значения. В коде показанном и нет никакого ввода пользователя, есть некие данные которые берутся на сайта А и передаются на сайт В.

['keyname' => тут данные сайта А, это может быть любой к примеру файл, содержимое которого получить той же file_get_contetnts(файл)]

Эти данные можно и зашифровать перед пересылкой, чтобы "не светить" их, и т.д., и т.п. На сайте В они будут доступны в массиве $_POST под ключом keyname, который вы можете заменить любым своим.

Это вообще может быть несколько ключ=>значение, и даже многомерный массив. Можно в header заказать и 'Content-type: multipart/form-data' и пересылать файлы (текстовые, изображения, и т.д.), а на сайте В получать их в массиве $_FILES.

Окунайтесь в руководство, и тренируйтесь на примерах на локальном сервере.

Sonya 21.06.2017 19:29

Спасибо!


Часовой пояс GMT +3, время: 07:48.