Главная » 2016 » Июнь » 20 » Файл в переменную
13:23
Файл в переменную
<?php $file_data = “”; $fd = fopen( “file, txt”, “r”); if (!$fd) { echo "e;Error! Could not open the file."e;; die; } while (! feof($fd)) { $file_data .= fgets($fd, 5000); } fclose ($fd);  ?> Функция fopen() - это ваш первый шаг для доступа к файлу. Она работает как шлюз между файловой системой и РНР. При открытии файла вам нужно указать имя файла и желаемый режим доступа к файлу. В этом случае мы открываем файл для чтения. Вы также можете открыть файл для записи.  Функция fopen() возвращает идентификатор ресурса, который вы будете использовать в других функциях работы с файлами. В нашем примере мы будем использовать функции fgets() и feof() для работы с файлом.  Как уже было отмечено, функции fopen() нужно передать имя файла и режим доступа к файлу. Вот наиболее полезные режимы (помните, что некоторые режимы могут быть недоступны, поскольку у вас не будет достаточных прав доступа к файлу):  • r открывает файл только для чтения, чтение начинается с начала файла.  • w открывает файл только для записи, запись начинается с начала файла, при этом уничтожается все содержимое файла. Если файл не существует, он будет создан.  • х создает и открывает файл только для записи, запись начинается с начала файла. Если файл сущес-твует, fopen () возвращает false. Опция поддерживается, начиная с версии РНР 4.3.2.  • а- открывает только для записи, запись начинается с конца файла. Если файл не существует, производится попытка создать его. Следующие режимы позволяют открыть файл в режиме чтения/записи, не используйте их, если вы не знаете точно, что вы делаете:  • w+ открывает файл для чтения/записи, указатель доступа к файлу помещается на начало файла. Если файл существует, все его содержимое будет удалено. Если файл не существует, производится попытка создать его.  • г+ открывает файл для чтения/записи, указатель доступа к файлу помещается на начало файла.  • а+ открывает файл для чтения/записи, указатель доступа к файлу помещается на конец файла. Если файл не существует, производится попытка создать его.  • х+ создает и открывает файл для чтения/записи, указатель доступа к файлу помещается на начало файла. Если файл существует, fopen () возвращает false. Опция поддерживается в РНР, начиная с версии 4.3.2. Вернемся к нашему сценарию. Инструкция $fd = fopen (“file. txt”,” r”) означает Открыть файл только для чтения и назначить идентификатор ресурса переменной $fd. Чтобы убедиться, что файл открыт корректно, нужно всего лишь проверить, есть ли у $fd значение.  Теперь мы готовы произвести реальную работу в цикле. Функция feof() скажет нам, если мы достигнем конца файла, поэтому ее можно использовать как условие останова цикла. Функция fgets() возвращает следующую строку файла, но не более 5 ООО символов за раз. Всю прочитанную информацию из файла мы присваиваем в $file_data. Функция fclose ($fd) используется для освобождения системных ресурсов и уведомит систему, что файл нам больше не нужен.  Совершенствование сценария  Множество сценариев обрабатывают данные построчно без сохранения их в одну большую переменную, особенно если размер файла довольно большой. Для такой организации работы вам нужно всего лишь изменить цикл. В следующем примере мы будем выводить каждую строку, которая содержит строку “bob”:  while (! feof($fd)) { $file_data = fgets ($fd, 5000); if (strstr ($file_data, “bob”) !== FALSE) {  print $file__data; } } Заметьте, что вместо оператора . = мы используем обычный оператор присваивания. Это незаметно, но очень важно. В зависимости от настройки вашего сервера, вы можете использовать функцию fopen () для чтения данных из URL, например:  $fr = fopen(“http : // www.yahoo.com”, “r”); Однако, если у вас собственный сервер, вы должны быть очень осторожными, разрешая функции fopen() получать доступ к файлам за пределами вашего сервера. Некоторые PHP-черви используют fopen() для своих вредоносных целей. Разрешить или запретить функции fopen() обращаться к удаленным файлам можно с помощью директивы allow_url_fopen из файла конфигурации php.ini. В качестве более мощной альтернативы для доступа к Web-сайтам вы можете использовать расширение cURL.  Что может быть не так?  Большинство проблем при работе с файлами возникают из-за недостаточных прав доступа. Также существуют файлы, к которым у РНР даже нет права чтения (например, файлы паролей), поэтому при обращении к ним вы получите сообщение об ошибке. Права доступа были рассмотрены чуть выше.  Теперь перейдем к большей проблеме: никогда не позволяйте пользователю открывать файл без проверки того, что пользователю нужен этот файл. Никогда не доверяйте данным, которые посылает вам пользователь. Если вы разрешаете пользователю передавать имена файлов, которые нужно открыть, проверьте: возможно, пользователь пытается обратиться к тем данным, которые ему не следует видеть. Вы нуждаетесь в правилах, которые ограничивают доступ к файлам вашей системе.  Также нужно проверять файлы, которые пользователь загружает на ваш сервер (нужно проверить тип, размер файла и др.).
Просмотров: 36 | Добавил: AdnrNick | Рейтинг: 0.0/0
Всего комментариев: 0
avatar