0 / 0 / 0
Регистрация: 04.06.2018
Сообщений: 22

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

12.06.2018, 13:22. Показов 3036. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru