Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22

Запись из js кода в файл

12.06.2018, 13:22. Показов 3015. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Сделал ПХП. Первый код получает информацию, второй код записывает ее в файл, лежащий на хостинге.
PHP
1
2
3
4
5
6
7
8
9
10
11
<?
$date = date("Y-d-m h:i:s ");
$ip =   $_SERVER['REMOTE_ADDR']; 
$referer =  $_SERVER['HTTP_REFERER'];
?>
 
<?
$fileName = $_SERVER['DOCUMENT_ROOT']. '/file.html';
$content  = "$date. $ip. $referer\n";
$length   = file_put_contents($fileName, $content, FILE_APPEND);
?>
Можно ли как либо туда засунуть данные с этого скрипта:
JavaScript
1
2
3
<script type='text/javascript'>
document.write(navigator.platform);
</script>
Знаю, как вывести это в div на страницу сайта, а как эту информацию сохранить в файл не могу допереть.
Благодарен за любую помощь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.06.2018, 13:22
Ответы с готовыми решениями:

Запись кода в файл
Добрый день. Я решал, казалось бы, простую задачу, но столкнулся с интересной проблемой. Для своего скрипта я решил добавить...

Запись кода в файл html
Здравствуйте! Моя программка генерирует однотипные математические выражения в том количестве, которое потребует пользователь. И записывает...

Запись html кода в файл
Здравствуйте. Мне нужно взять html код страницы в интернете и записать его в xml файл или же в txt. Имею следующий код: import...

14
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
12.06.2018, 18:48
gurutel, доступ к серверном скрипту есть? Если да, то ajax’ом отправляете запрос на выполнение серверного скрипта. В серверном скрипте реализуете запись в файл. Напрямую из js записать нельзя.
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
12.06.2018, 19:34  [ТС]
доступ к серверном скрипту есть?
Не знаю. К какому серверному скрипту? Просто я не совсем в этом силен, и не понимаю, что за "серверный скрипт"
Может и есть, только направьте в нужную сторону.
Если да, то ajax’ом отправляете запрос на выполнение серверного скрипта. В серверном скрипте реализуете запись в файл
С аяксом и записью в файл направьте, пожалуйста. Сейчас попробую тоже что-нибудь набросать, выложу.
Спасибо!

P.S. Все эти коды, скрипты, пхп и прочее лежат у меня в одном индексном файле.
Доступ ко всем файлам и папкам имеется.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
12.06.2018, 20:43
gurutel, php исполняется на сервере, а js на стороне клиента. Так вот js может отправить ajax запрос на сервер, который обратиться к скрипту, например php файлу, который может что-то с файлом сделать.
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
12.06.2018, 23:38  [ТС]
Вот мой индексный файл index.php

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<script async type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
 
<?
$date = date("Y-d-m h:i:s ");
$ip =   $_SERVER['REMOTE_ADDR']; 
$referer =  $_SERVER['HTTP_REFERER'];
?>
 
<strong id="fp"></strong>
<p id="time"></p>
<p id="details"></p>
 
 <script src="fingerprint2.js"></script>
 <script type="text/javascript">
 var peremennaya; if(peremennaya != 0) {foo(); } 
  function  foo() { 
      var d1 = new Date();
      var fp = new Fingerprint2();
      fp.get(function(result, components) {
        var d2 = new Date();
        var timeString = "Time took to calculate the fingerprint: " + (d2 - d1) + "ms";
        var details = "<strong>Detailed information: </strong><br />";
        if(typeof window.console !== "undefined") {
          //console.log(timeString);
          //console.log(result);
          for (var index in components) {
            var obj = components[index];
            var value = obj.value;
            var line = obj.key + " = " + value.toString().substr(0, 100);
            //console.log(line);
            details += line + "<br />";
          }
        }
 
                perem = "<? echo $date. $ip. $referer ; ?>" + details +  result + timeString;   
                $.post( "submit.php",  { perem }, 
                function( data ) { 
                $( ".show_rezult" ).html(data);   }
          );
 
 
 
      });
    }
 
</script>
//тут тело документа//
Вот submit.php
PHP
1
2
3
4
5
6
7
8
<?
    $perem = ($_POST['perem']);
    if (!empty($perem))
    {
    $write = @file_put_contents('file.html', $perem."\n <br><br>" , FILE_APPEND | LOCK_EX);
    if($write){ echo '<b class=time>Записано'; } else{ echo 'Данные не записаны'; }
    }
?>
Данные записываются в файл file.html, но крайне редко. Где я ошибся? Как можно исправить. Заранее спасибо.
И еще, если javascript у пользователя отключен, то вся эта затея прахом идет. Можно и с этим что либо придумать?
0
6 / 6 / 2
Регистрация: 28.12.2016
Сообщений: 30
12.06.2018, 23:52
gurutel,
Вот смотри
JavaScript
1
$.post( "test.php", { name: "John", time: "2pm" } );
в данном коде информация присваивается полям name и time.
потом можно на сервере достать эти данные через $_POST['name'] и $_POST['time']
а у тебя в коде никаким полям ничего не присваивается, ты просто отправляешь строку, которая у тебя в perem лежит

Если у пользователя отключен javascript, ты ничего не сделаешь, пожалуй. Разве что заставить пользователя самостоятельно отправлять форму с данными
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
13.06.2018, 14:57  [ТС]
Получается так?
в index.php меняю
HTML5
1
$.post( "submit.php",  { perem },
на
HTML5
1
$.post( "submit.php", { name: "John", time: "2pm" },  { perem },
в submit.php делаю так:
HTML5
1
2
3
4
5
6
7
8
9
10
11
<?
    $perem = ($_POST['perem']);
    $name = ($_POST['name']);
    $time = ($_POST['time']);
        
    if (!empty($perem))
    {
    $write = @file_put_contents('file.html', $name. $time. $perem."\n <br><br>" , FILE_APPEND | LOCK_EX);
    if($write){ echo '<b class=time>Записано'; } else{ echo 'Данные не записаны'; }
    }
?>
Но ничего не выходит...
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
13.06.2018, 17:00
gurutel в общем виде это должно выглядеть так:

JavaScript
1
2
3
4
5
var переменная, которую передаём на сервер = 'На сервер';
var request = new XMLHttpRequest();
request.open('POST', 'название файла со скриптом на сервере.php', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send("ключ в массиве $_POST=" + переменная, которую передаём на сервер);
в файле название файла со скриптом на сервере.php:

PHP
1
$fromJs = $_POST['ключ в массиве'];
Таким образом, Вы получите в переменной $fromJs на стороне сервера значение 'На сервер'.
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
13.06.2018, 18:38  [ТС]
Так а всё, что я выше написал не нужно?

Можете, пожалуйста подробнее немного написать, исходя из моего примера, в какой файл что из этого засунуть? Чтоб я понимал. какие значения кому присваивать.

Хотя, я немного не пойму, что за 'ключ в массиве'
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
13.06.2018, 19:22
gurutel, ну как Вам сказать... Хотя можно сделать так - просто опишите какие переменные Вы хотите записать в файл.
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
13.06.2018, 19:30  [ТС]
Их очень много. Все, что распознает fingerprintjs.
Но главные переменные это:
1. Дата
2. Время
3. IP (это супер обязательно)
4. Referrer
5. User Agent (это супер обязательно)
6. navigator.platform (это супер обязательно)
0
24 / 24 / 15
Регистрация: 05.06.2018
Сообщений: 83
13.06.2018, 20:01
gurutel, если не ошибаюсь, то вы передаете значение переменной, но не даете ей никакого индекса, чтобы на нее ссылаться.
Попробуйте так:
JavaScript
1
$.post( "submit.php", { data : perem },
А уже в самом php ссылайтесь на $_POST['data'].
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
13.06.2018, 20:31
Лучший ответ Сообщение было отмечено gurutel как решение

Решение

gurutel,

JavaScript
1
2
3
4
5
6
7
8
9
10
var datum = 'Data';
var vremya = 'time';
var ip = 'ip';
var referrer = 'referrer';
var userAgent = 'User Agent';
var platform = navigator.platform;
var request = new XMLHttpRequest();
request.open('POST', 'serverScript.php', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send("data="+datum+'&vremya='+vremya+'&ip='+ip+'&referrer='+referrer+'&userAgent='+'&platform='+platform);
в файле serverScript.php можно разместить кусок скрипта для записи в файл. В глобальном массиве переданные переменные будут доступны так:

PHP
1
2
3
4
5
6
$_POST['data']
$_POST['vremya']
$_POST['ip']
$_POST['referrer']
$_POST['userAgent']
$_POST['platform']
1
6 / 6 / 2
Регистрация: 28.12.2016
Сообщений: 30
13.06.2018, 22:11
gurutel,
нет, надо
JavaScript
1
$.post( "submit.php",  { perem },
поменять на
JavaScript
1
$.post( "submit.php", { perem: perem},
и все, php-скрипт менять не надо
0
0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22
13.06.2018, 23:12  [ТС]
В index.php
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
<script>
var datum = 'Data';
var vremya = 'time';
var ip = 'ip';
var referrer = 'referrer';
var userAgent = 'User Agent';
var platform = navigator.platform;
var request = new XMLHttpRequest();
request.open('POST', 'serverScript.php', true);
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.send("data="+datum+'&vremya='+vremya+'&ip='+ip+'&referrer='+referrer+'&userAgent='+'&platform='+platform);
</script>
в ServerScript.php
PHP
1
2
3
4
5
6
7
8
9
10
<?
$date = $_POST['data'];
$time = $_POST['vremya'];
$ip = $_POST['ip'];
$referrer = $_POST['referrer'];
$userAgent = $_POST['userAgent'];
$platform = $_POST['platform'];
$data = $date. $time. $ip. $referrer. $userAgent. $platform;
file_put_contents('file2.txt', $data, FILE_APPEND | LOCK_EX);
?>
в file2.txt
HTML5
1
DatatimeipreferrerWin32
Да еще и в одну строку всё без пробелов.
Чуточку не хватает. Где ошибся?

Добавлено через 1 минуту
Непонятно почему, скрипт перестал срабатывать вовсе. Бэкапнул на начало, не работает. А за подсказку спасибо. Где же вы раньше были...

Добавлено через 8 минут
Исправил!
Как сделать, чтобы с новой строки каждый шел?
PHP
1
2
3
4
5
6
7
8
9
10
<?
$date = date("Y-d-m h:i:s ");
$time = $_POST['vremya'];
$ip = $_SERVER['REMOTE_ADDR'];
$referrer = $_SERVER['HTTP_REFERER'];
$userAgent = $_SERVER['HTTP_USER_AGENT'];
$platform = $_POST['platform'];
$data = $date. $time. $ip. $referrer. $userAgent. $platform;
file_put_contents('file2.txt', $data, FILE_APPEND | LOCK_EX);
?>
Добавлено через 20 минут
Готово! Спасибо всем. Проблема решена.
Если есть возможность, подскажите, как можно каждого нового пользователя нумеровать?
Например, номер должен стоять перед Датой.
PHP
1
2
3
4
5
6
7
8
9
<?
$date = '<b>Дата:&nbsp;</b>'.date("Y-d-m").'<br>'.'<b>Время:&nbsp;</b>'.date("h:i:s").'<br>';
$ip = '<b>IP:&nbsp;</b>'.$_SERVER['REMOTE_ADDR'].'<br>';
$referrer = '<b>Переход с:&nbsp;</b>'.$_SERVER['HTTP_REFERER'].'<br>';
$userAgent = '<b>UserAgent:&nbsp;</b>'.$_SERVER['HTTP_USER_AGENT'].'<br>';
$platform = '<b>Реальная ОС:&nbsp;</b>'.$_POST['platform'].'<br>';
$data = $date. $ip. $referrer. $userAgent. $platform;
file_put_contents('file2.txt', $data."\n <br><br>", FILE_APPEND | LOCK_EX);
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2018, 23:12
Помогаю со студенческими работами здесь

Запись двоичного кода в файл
Доброго времени суток. Реализую алгоритм Хаффмана по заданию и не совсем понимаю, как записать биты в файл. У меня есть буфер в 16 бит, при...

Запись в файл HTML кода PHP
Дан файл HTML, нужен PHP скрипт который записывает в этот файл PHP код, с целью его дальнейшего исполнения в нем.

Структурирование HTML кода и запись в файл
Здравствуйте, с записью информации в файл это понятно, но как можно структурировать HTML кода. Есть у нас строка верстки, а нам нужно...

Запись в файл HTML-кода страницы
Пытаюсь записать в файл код страницы следующим образом QWebPage w; ...

Получение кода страницы и запись в файл. (Ну не выходит...)
Пытаюсь получить код страницы и записать его в файл. Перепробовал уже кучу функций. Почему не выходит не понимаю. Последний вариант был...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru