Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Топ пользователей
Drunya
Репутация: 110
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
Сегодня хотелось бы рассказать о том как работать с файлами для начинающих девелоперов. Работать с файлами на PHP довольно просто, если это не требует каких либо дополнительных движений, например блокировки файлов на чтение или чтение и запись и так далее. Хотя и это сделать не сложно, главное правильно выстроить логику приложения.

Для чего это можно использовать
Файлы можно и нужно использовать для всего что достаточно часто используется и занимает не большой объем. Сейчас я объясню что хочу этим сказать. Например у нас есть счетчик написанный на PHP и он при каждом запросе к странице должен увеличивать свое значение на один пункт. Можно написать такой счетчик без использования функций для работы с файлами на PHP. Например использовать базу данных. Но если на ваш сайт заломится сразу 10000 человек и начнут клацать, думаю сайт на обычном хостинге ляжет как миленький. А вот если написать такой функционал с использованием файловой системы, он выдержит и более тяжелые нагрузки, если не помешают другие факторы. А так же в файлы пишутся всевозможные логи и временная инфа. Так же как и конфиги.

Безопасность
Конечно с файлами тоже связанны некоторые уязвимости, но если все делать прямыми руками, то они гораздо менее серьезные чем при работе с базой. Например в базу можно послать SQL иньекцию, а в файлах такой злонамеренный код потеряет смысл. Обезопасить информацию в файлах можно запретив и предотвратив доступ к ним. Для этого в папку с файлом можно например положить файл .htaccess с содержанием
Code:
Deny From All



Практические примеры работы с файлами на PHP

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

простой пример записи
 1 
 2 
<?php //пишем в файл file.dat слово test
file_put_contents('file.dat''test');?>
По сложнее
 1 
 2 
 3 
 4 
 5 
 6 
<?php //открываем файл для записи. Для чего открываем указываем во втором аргументе. Подробно о том какие они есть можно почитать в доке по PHP на функцию fopen
$f fopen('file.dat''w');
//записываем в файл слово 'test'
fwrite($f'test');
//закрываем файл
fclose($f);?>

Вот и вся разница. Но во втором случае мы можем контролировать, создавать ли нам новый файл или писать в уже существующий с таким именем, путем передачи второго аргумента в функцию fopen(). Так же можно контролировать для чего именно мы открываем файл, чтение, запись, чтение/запись и т.д. Так же файлы можно перезаписать или дописать и за это тоже отвечает второй аргумент fopen(). Еще можно заметить что если вы будете затем просматривать эти файлы и не позаботитесь о переводе строк, в них все будет в одной строке. Для перевода строк в файлах нужно использовать символ перевода строки "\n". То есть писать нужно так(если это вам надо конечно)
 1 
 2 
<?php fwrite($f'test' "\n");?>
Если написать это все в одиночных кавычках то \n будет расценено как часть текста а не перевод строки, секете?

Чтение из файлов на PHP
Читать из файлов можно так
 1 
 2 
<?php $data file_get_contents('file.dat');?>
 1 
 2 
<?php $data file('file.dat');?>
Это два примера из множества. Первый просто читает все из файла и отдает. А второй способ читает из файла все строки и возвращает массив с этими строками. Таким образом из файла с одной строкой выйдет массив с одним элементом.
Работа с файлами на PHP

Теги: создание файлов на PHP; Apathe; запись файлов на PHP; Работа с файлами;
Источник: Drunay
Автор: Drunya
Категория: PHP
Просмотров: 4247
Комментариев: 0

Сейчас online: 103. Зарегистрированных: 0. Гостей: 103.
-->