Script to upload your file on web server

Работа с файлами в PHP

С помощью функции file_get_contents() можно получить содержимое файла:

Также мы можем получить html-код какой-либо страницы в интернете:

'; echo file_get_contents('https://ya.ru'); echo '';

Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.

Чтение файла: file()

Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.

Создадим в корне сайта файл data.txt со следующим содержимым:

Теперь запустим скрипт index.php со следующим кодом:

При запуске этого скрипта мы получим в браузере:

array(3) < [0]=>string(7) "Vasya " [1]=> string(7) "Petya " [2]=> string(5) "Gosha" >

Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.

Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :

Теперь у всех строк будет по 5 символов.

Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :

Разумеется, мы можем передать сразу две константы:

Создание файла и запись в файл: file_put_contents()

Функция file_put_contents() позволяет создать файл и заполнить его данными.

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

Если файла не существует — он будет создан. Если существует — данные в файле будут перезаписаны.

Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :

Также вторым параметром можно передать массив:

Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:

Создание папки или структуры папок

Создать папку можно с помощью функции mkdir() (make directory):

Вторым параметром указываются права доступа к файлу в виде восьмеричного числа, по-умолчанию это 0777 , что означает самые широкие права. Для Windows этот аргумент игнорируется.

Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :

Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :

Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:

Читайте также:  Css and javascript compressor

Права доступа — это отдельная объёмная тема, поэтому сейчас мы её пока рассматривать не будем.

Проверка существования файла или папки

Проверить существование папки или файла можно с помощью функции file_exists() :

Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :

Проверка прав доступа

Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:

Копирование, перенос и удаление файла

Для удаления файлов используется функция unlink() :

Чтобы скопировать файл, используем функцию copy() :

Для переименования и переноса файла в другую папку используется функция rename() :

Работа с файлами с помощью fopen()

Функций file() , file_get_contents() и file_put_contents() достаточно для решения большинства задач, связанных с управлением файлами.

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

Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :

Функция fopen() возвращает так называемый лескриптор. Это ссылка, указатель на файл, его мы будем передавать в другие функции. Кстати, тип данных этого дескриптора — resource .

Первым параметром мы передаём путь к файлу, вторым — модификатор доступа к файлу. Ниже перечислены наиболее популярные модификаторы:

  • r — открытие для чтения, указатель переходит в начало файла.
  • r+ — открытие для чтения и записи, указатель переходит в начало файла.
  • w — открытие для записи, указатель переходит в начало файла. Если файла нет — создаётся, если есть — очищается от данных.
  • w+ — открытие для чтения и записи, в остальном аналогичен w .
  • a — открытие для записи, указатель переходит в конец файла. Если файла нет — создаётся.
  • a+ — открытие для чтения и записи, в остальном аналогичен a .
  • x — создание и открытие для записи, указатель переходит в начало файла. Если файл существует — PHP покажет ошибку.
  • x+ — создание и открытие для чтения и записи, в остальном аналогичен x .

Указатель — это нечто вроде курсора. Вы можете переместить его в любое место файла, чтобы добавить или отредактировать определённые данные.

Для записи данных в файл существует функция fwrite() . Давайте попробуем создать файл и записать в него какие-нибудь данные:

Заметьте, из-за модификатора w при каждом запуске скрипта данные в файле стираются и добавляются заново. Если модификатор заменить на a , данные будут не перезаписываться, а добавляться в конец файла.

Для построчного чтения файла используется функция fgets() :

При каждом запуске fgets получает следующую строку и возвращает её в $line . Вторым параметром передаётся максимальная длина строки. Это означает, что если строка слишком длинная, она будет обрезана.

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

Источник

Wideskills

C
H
A
P
T
E
R
S PHP Tutorial

O
T
H
E
R

12 — File handling in PHP

Web server can access only files located under root document, on the other side PHP can access a file from any location in the file system if the file permissions are set accurately or include_path is set correctly.

Читайте также:  Java util timer start

In a file manipulation process following tasks can be included:

· Open file for read and write

· Perform operations on file

With PHP we can handle files easily. There are various in built functions available for file handling in PHP.

Using file handling we can open, create, upload and edit files.

In PHP before working with file, we must open the file first using fopen() function

fopen() function is used in the following manner to perform this task:

In the above code, we have used two parameters while using fopen() function:

· Mode in which file is to be opened.

The function will return a file pointer if the file is successfully opened, otherwise it will return false (zero).

Modes we can use in file handling:

Read only mode, file pointer will set at the starting position of file.

Read and write mode, file pointer will set at the starting of file.

Write mode only, if the file exists it will open otherwise a new file will be created. If the file already exists, earlier contents will be overwritten

Write and read mode, if file exists contents will be overwritten otherwise a new file will be created.

Append file, if file exists it will open and file pointer will set at the ending of file, if it doesn’t exists a new file will be created.

Read and append mode, if file exists the pointer will set at the end of file, otherwise a new file will be created.

It is used to create and open a file only for writing purpose, if file exists this mode will return false and display an error. If file doesn’t exists it will simply create a file

There are four types of file connections can be made in PHP:

File read

For reading purpose of a file in PHP fread() function can be used. This function takes a file pointer and a file size in bytes as parameters. If the file size is not clear, we can use filesize() function as parameter, like:

File Write

In PHP file writing process can be done with fwrite() function, which takes two parameters first file pointer and a string, with an optional length in bytes. The syntax of fwrite() function is:

$fout=fwrite($fp,$fstring); if($fout!=strlen($fstring))

File close

File close can be done using fclose(). The syntax of file close is:

fclose() function does not require assignment in any variable.

feof

This function is used to check for end-of-file on a file pointer and takes a filename as argument. It is basically used in loop to perform the same function on each line in a file.

Читайте также:  Узнать версию php через терминал

file_exists

This function simply checks for the availability of file on local file system with the specified name.

Function will simply return true if the file exists, otherwise false will be returned.

PHP file upload

The main use of PHP file handling is to upload files on web server. We can perform this task using HTML form.

For the same we have to create HTML form like:

      

This page is created to upload file on web sever



Choose a file you want to upload on server:




Description of above form contents

· enctype: is the attribute that will define that the file to be uploaded is being uploaded using HTML form.

· action: This attribute is used to define the reference of PHP file, that is responsible to handle code for uploading PHP file.

· method: This attribute is used to define the way to transferring mode of contents to the PHP file. It can be GET and POST.

· input type: Using this attribute we can define the maximum size of file in bytes, that can be uploaded.

· input name: This attribute is used to define the name of uploaded file.

Output of HTML file is:

PHP code to handle the uploading process

In the above HTML code we have defined file uploadfile.php to handle in action attribute. File will be uploaded in a temporary folder on web server. PHP uses $_FILES array to store all the information about files.

For file uploading process, we first need to understand the $_FILES array

Uploadedfile: The reference of file that we want to upload.

Code of uploadfile.php

 350000) < echo "Your file is too large.
"; $ok=0; > //To check the file type condition if ($uploaded_type =="text/php") < echo "No PHP files
"; $ok=0; > //To check that $ok was not set to 0 by an error if ($ok==0) < Echo "Sorry your file was not uploaded"; >//If everything is ok file will be uploaded else < if(move_uploaded_file($_FILES['file_upload'] ['tmp_name'], $target)) < echo "The file ". basename( $_FILES['file_upload']['name']). " has been uploaded"; >else < echo "Sorry, there was a problem uploading your file."; >> ?>

Output of above code is:

Writing text file using PHP

We can write in text file using PHP. For the same firstly file should be opened in write mode.

     

The output of above code is

Reading a text file using PHP

A text file can be easily used to store data. But these types of files are not so much flexible as databases.

Text file can consume less amount of memory.

To perform a read operation in text file, first of all we should open file in read mode. Then we can read file in line by line manner or it can be completely read.

      fclose($fp); ?>  

The output of above code is:

Where story.txt if a text file.

Источник

Оцените статью