Почему текстовый файл (.txt) превращается в бинарный?
Приветствую.
На сайте есть кнопка. При клике по ней через jquery ajax отправляются данные в php файл. Этот файл записывает полученные данные в текстовый файл. Проверяю работу — все работает нормально. Проверяю спустя месяц или два — содержимое файла превращается из удобочитаемого вот в такое:
... 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ... |
... 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ...
У меня к вам несколько вопросов:
1. Почему так происходит?
2. Что можно сделать, чтобы избежать этого?
3. Можно ли как-то восстановить содержимое файла в нужный вид?
P.S.
Файл предоставить не могу, так как в нем конфиденциальные данные.
Дополнительно:
Я тут подумал что файл, скорее всего, остался как был. А бинарным его посчитала какая-то программа, которой наш гений его просматривает. Из-за какого-то одного непечатного символа.
Ответы:
1. Какой-то другой скрипт переписал файл.
2. Найти этот скрипт. Или заменить пути сохранения файлов, если лень.
3. Взять из резервной копии (только не говорите, что у вас их нет).
- 1. Какой другой? Нет никаких других, есть только один.
2. Как его найти, если есть только один скрипт?
3. Я этот файл открывал полгода назад. Копий нет. - weranda,
1. посмотрите время изменения файлов, понаблюдайте неделю, на каких файлах меняется это время. Так вы получите представление, как часто меняется содержимое.
2. Измените права доступа к уже имеющимся файлам, сделайте владельцем файла только root (если вы в линуксе), уберите из доступа других пользователей и их группы. Понаблюдайте неделю за логами программ, кто начнет сыпать ошибку, что не может перезаписать файл - тот и пишет.
3. Измените пути сохранения файлов в другой каталог. Если портить перестали, значит другой процесс спрециализируется только на том каталоге, куда писалось раньше. - Justa Gain, Океюшки, вот вам код.
$('.some-span').on("click", function(){ var getAttr = $(this).attr('data-value'); $.ajax({ type: 'POST', url: '/some.php', data: { value: getAttr, page: window.location.href } }); });
$('.some-span').on("click", function(){ var getAttr = $(this).attr('data-value'); $.ajax({ type: 'POST', url: '/some.php', data: { value: getAttr, page: window.location.href } }); });
<?php $file = 'some.txt'; $current = file_get_contents($file); $current .= "n" . $_POST['value'] . " " . urldecode($_POST['page']); file_put_contents($file, $current);
<?php $file = 'some.txt'; $current = file_get_contents($file); $current .= "n" . $_POST['value'] . " " . urldecode($_POST['page']); file_put_contents($file, $current);
Это решает задачу?
- склоку раздувать не надо. Старайтесь писать строго по теме. Если считаете, что комментарии неуместны - пользуйтесь штатными средствами ресурса, раздувать флейм обсуждения комментариев и тем более переходить на личности не надо.
- Я так делал. У меня через пол года некоторые данные стёрлись. Произошла гонка. В PHP есть блокировки на такие случаи.
- weranda, эти данные ваш скрипт взял из $_POST.
Запрос на сервер может прислать кто угодно откуда угодно.
И взять их может кто угодно, судя по тому, где вы их храните.
Если они конфиденциальные, то более целесообразно хранить их в базе данных.
Также почитайте про XSS и CSRF. - weranda,
Океюшки, вот вам код.
Океюшки, вот вам совет: Не пихайте непроверенные данные в файлы, которые лежат у вас на сервере. У вас код
1) берет данные из части хтмля (т.е. открытых пользователю данных)
2) Отсылает их на сервер без проверки, что еще пол беды
3) Серверная часть тупо пишет в файл все что приходит в пост запросе, который я могу повторить за 1 минуту, напихав вам в файл содержимое dev/urandom весом в 50гиг...
Думаю это не ок... - Роман Чубич ThunderCat
Спасибо, понял, надо сделать проверку.
Возможно, через уязвимость(и) веб-сайта содержимое файла перезаписывается. Существуют сканеры безопасности - стоит проверить ими.
Стоит посмотреть на логи, фильтруя по пути. Можно проверить с каких IP идёт запрос. Для дополнительной информации стоит добавить журналирование параметров запроса и само тело запроса.
Как восстановить: восстановить из резервной копии.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Когда текстовый файл (.txt) превращается в бинарный, это происходит из-за того, что компьютеры работают с данными различными способами, в зависимости от их типа. Текстовый файл содержит информацию в виде текста, который читаем человек, а бинарный файл содержит информацию в виде набора байтов, которые понимает компьютер.
Когда вы открываете текстовый файл на своем компьютере, операционная система понимает, что это текстовый файл и отображает его содержимое в виде текста. Но когда вы открываете бинарный файл, операционная система не понимает его структуру и отображает его в виде набора символов, которые не имеют смысла для человека.
Преобразование текстового файла в бинарный может происходить по разным причинам. Например, когда вы сохраняете текстовый файл в кодировке, отличной от ASCII, он может быть сохранен как бинарный файл. Также это может произойти, когда в текстовом файле содержатся специальные символы или управляющие последовательности, которые не могут быть представлены в виде текста.
Если вам необходимо работать с текстовым файлом как с бинарным, вы можете использовать специальные программы или скрипты, которые позволят вам читать и изменять содержимое файла в бинарном формате. Важно помнить, что при работе с бинарными файлами необходимо быть осторожным, так как неправильные изменения могут повредить данные.
// Пример кода на PHP для чтения бинарного файла и вывода его содержимого $file = fopen('binary_file.bin', 'rb'); $content = fread($file, filesize('binary_file.bin')); fclose($file); echo $content;
Надеюсь, данное объяснение поможет вам понять, почему текстовый файл может превратиться в бинарный и как с этим работать. Если у вас есть дополнительные вопросы, не стесняйтесь задавать.