Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Манипуляции с данными файла

Оглавление

Оглавление. 1

Введение. 3

Установка веб-сервера, базы данных и PHP. 3

Ручная. 3

Денвер. 8

wamp. 8

Обработка форм в PHP. 8

Загрузка файла на сервер. 10

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

Открытие файла. 14

Манипуляции с данными файла. 14

Закрытие файла. 15

Работа с базой данных MYSQL. 15

mysqli_connect 15

mysqli_close. 16

mysqli_query. 16

mysqli_insert_id. 17

mysqli_set_charset 17

Заключение. 17

Дополнительный материал: 18

Литература. 18

 


Введение

Поскольку PHP является серверным скриптовым языком, то для его обработки необходим интерпретатор. Чаще всего таким интерпретатором является расширение веб-сервера. Иными словами веб-сервер настраивается таким образом, что когда пользователь посещает страницу с расширением php, то она воспринимается не как обычная страница html, а её код пропускается через интерпретатор.

Веб-сервер не является чем-то мифическим, Вы можете довольно легко установить его на свой компьютер или ноутбук. Этого вполне достаточно для задач разработчика. В данной лекции мы рассмотрим с Вами как установить веб-сервер Apache, поставить расширение PHP и базу данных MySQL. Научимся принимать данные из форм, записывать файлы, выполнять запросы к базе данных.

Установка веб-сервера, базы данных и PHP

Ручная

Ручная установка является наиболее длительным и трудоемким способом, но как настоящие программисты, Вы должны понимать, что она дает наибольшую свободу настройки и понимания процесса работы Вашего сервера.

Для того чтобы установить веб-сервер Apache необходимо:

1. Скачать установочный пакет httpd-2.2.25-win32-x86-openssl-0.9.8y.msi с сайта http://apache.cp.if.ua/httpd/binaries/win32/

2. Запустить его.

3. Ввести следующую информацию о сервере:


4. Создать папку C:\Users\Public\Apache\

5. Выбрать папку для установки.

Итак, Апач мы установили, теперь если он у вас автоматически не запустился, нужно его запустить. Проверить запустился он или нет можно благодаря появившейся иконке:

При работе с веб-сервером Апач вам потребуется довольно часто перезапускать его (stop, затем опять start), чтобы новые изменения вступили в силу. Это можно сделать и без командной строки, нажав левой кнопкой мыши на значок Апача в системном трее (возле часов):

Если все в порядке, то перейдя в браузере по этому адресу: http://localhost/ вы увидите пустую белую страницу с лаконичной надписью:

Чтобы начать работать пройдите в папку Апача C:\Users\Public\Apache\htdocs\ В ней будет один единственный файл index.html, удаляем его и можете создавать папки под свои сайты. Cоздам папку myblog, теперь в браузере к сайту нужно обращаться по пути http://localhost/myblog/

Скачать и установить PHP

Для этого нужно зайти на официальный сайт на страницу загрузки: http://php.net/downloads.php (или сразу на http://windows.php.net/download/#php-5.3), выбираем версию не PHP 5.5, не PHP 5.4, а PHP 5.3. Последняя версия PHP 5.3 на данный момент: 5.3.27. Из разделов «VC9 x86 Thread Safe» и «VC9 x86 Non Thread Safe» выбираем первый. Скачиваем не инсталлятор, а zip архив! Создаём где угодно папку с любым названием и распаковываем в неё архив.

C:\Users\Public\php\

Открываем текстовый файл с найстройками Apache C:\Users\Public\Apache\conf\httpd.conf, в самом конце этого файла добавляем 2 строки:

LoadModule php5_module "C:\Users\Public\php\php5apache2_2.dll"

AddType application/x-httpd-php.php

 

Сохраняем изменения и перезапускаем Apache – PHP подключён! За настройки PHP отвечает файл php.ini. Однако как вы сами можете заметить, его нет в нашей папке с PHP, а вместо него у нас есть файлы по типу: php.ini-production, php.ini-development и тд. Так вот чтобы создать файл настройки нам нужно переименовать один из таких файлов в php.ini. Переименуем файл php.ini-development.

Теперь самое время проверить работоспособность всего, что мы успели сделать. Для этого заходим в htdocs и в нём в любом месте создаём файл с произвольным именем, например, 1.php, открываем его для редактирования и пишем следующее:

<?php

phpinfo();

?>

 

Сохраняем файл и обращаемся к нему из браузера. В моём случае путь к нему: http://localhost/myblog/1.php Если вы всё сделали, как я писал, то должны увидеть следующее:

Установка MySQL

Заходим на страницу http://dev.mysql.com/downloads/mysql/, проверяем, что выбрана версия для Windows и жмём кнопку Download.

После принятия лицензии выбираем "Server only".

Устанавливать можно в любую папку. Далее вам нужно будет ввести пароль к базе данных, который нужно запомнить или записать, так как его мы будем вводить при работе, для соединения с базой данных.

Заметка: MySQL (сервер базы данных) и Apache (веб-сервер) никак не связаны и не Заметка: взаимодействуют между собой.

Осталось только связать PHP и MySQL. Для этого необходимо зайти в уже известный нам php.ini и раскоментировать (удалить точки с запятой) 2 строки:

;extension=php_mysql.dll

;extension=php_mysqli.dll

 

После этого ищем строку:

; extension_dir = "ext"

 

И меняем на:

extension_dir = "C:\Users\Public\php\ext"

 

Сохраняем и перезапускаем Апач.Если вам понадобится изменить какие-либо настройки MySQL, в том числе те, которые вы выбирали при установке, то можете это сделать в файле my.ini в папке с MySQL.

Существуют проекты, которые выполняют за Вас пакетную установку этих программ. Вот наиболее известные из них:

Денвер

http://www.denwer.ru/

Wamp

http://www.wampserver.com/ru/

Обработка форм в PHP

PHP позволяет обрабатывать данные, которые пользователь ввел в поля формы. После активации кнопки submit данные отправляются на страницу – обработчик, указанную в поле action элемента <form>. На странице – обработчике располагается PHP скрипт, который выполняет определенные операции над полученными данными, например формирует и отсылает письмо по указанным пользователем реквизитам.

Данные из формы передаются на сервер как последовательность пар имя/значение. Это значит, что имя каждого элемента формы (появляющееся в атрибуте NAME тега) связывается со значением этого элемента (введеным или выбранным пользователем). Формат имя/значение, используемый для передачи, имеет вид имя=значение.

Данные, передаваемые из формы в программу–обработчик располагаются в следующих суперглобальных массивах: $_GET, $_POST, и $_REQUEST.

$_GET[] — содержит все значения, передаваемые методом GET.

$_POST[] – содержит все значения, передаваемые методом POST.

$_REQUEST[] – содержит все значения, передаваемые методами POST и GET.

Также существуют следующие суперглобальные массивы:

$_SERVER – a hash of variables set specifically by the web server, and relevant to the execution of the program

$_ENV – a hash of variables related to the host machine and it’s configuration

$_SESSION – a hash of variables that are meant to be persisted between page views or separate application executions

$_COOKIE – a hash of variables that are to be stored with the client

$_FILES – a special type of request hash that holds input data related to an uploaded set of files

Далее создадим небольшую форму, которая потребуется нам для работы с обработчиком, который мы создадим поздне:

<form action="process.php" method="post">

Имя:

<input type="text" name="FName"/>

Фамилия:

<input type="text" name="LName"/>

Город:

<input type="text" name="City"/>

Сообщение:

<textarea name="Message" cols="30" rows="5">

</textarea>

<input type="submit" name="submit" value="Отправить"/>

</form>

После нажатия на кнопку submit данной формы все данные передаются обработчику process.php. Так как в этой форме используется метод POST, то все переменные будут расположенны внутри массива $_POST.

Теперь создадим обработчик: process.php

<?php

echo "Имя: <font color="green"> ". $_POST["FName"]. "</font><br/>";

echo "Фамилия: <strong> ". $_POST["LName"]. "</strong><br/>";

echo "Город: <em> ". $_POST["City"]. "</em><br/>";

echo "<br/>";

echo "Ваше сообщение: ". $_POST["Message"];

?>

Расположим этот файл внутри директории со страницей формы. Теперь при использовании формы данные передадутся обработчику, который выведет на экран сообщение, содержащее пользовательские данные.

Загрузка файла на сервер

Страница для загрузки файлов может быть реализована при помощи специальной формы, которая выглядит примерно так:

 

<!-- Тип кодирования данных, enctype, ДОЛЖЕН БЫТЬ указан ИМЕННО так -->

<form enctype="multipart/form-data" action="__URL__" method="POST">

 

<!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла -->

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

 

<!-- Название элемента input определяет имя в массиве $_FILES -->

Отправить этот файл: <input name="userfile" type="file" />

<input type="submit" value="Send File" />

 

</form>

 

В приведенном выше примере __URL__ необходимо заменить ссылкой на PHP-скрипт.

Скрытое поле MAX_FILE_SIZE (значение необходимо указывать в байтах) должно предшествовать полю для выбора файла, и его значение является максимально допустимым размером принимаемого файла в PHP. Рекомендуется всегда использовать эту переменную, так как она предотвращает тревожное ожидание пользователей при передаче огромных файлов, только для того, чтобы узнать, что файл слишком большой и передача фактически не состоялась. Помните, обойти это ограничение на стороне браузера достаточно просто, следовательно, вы не должны полагаться на то, что все файлы большего размера будут блокированы при помощи этой возможности. Это по большей части удобная возможность для пользователей клиентской части вашего приложения. Тем не менее, настройки PHP (на сервере) касательно максимального размера обойти невозможно.

Замечание: Также следует убедиться, что в атрибутах формы вы указали enctype="multipart/form-data", в противном случае загрузка файлов на сервер выполняться не будет.

Суперглобальный массив $_FILES доступен начиная с PHP 4.1.0 (В более ранних версиях используйте вместо него $HTTP_POST_FILES). Эти массивы будут содержать всю информацию о загруженных файлах.

Содержимое массива $_FILES для нашего примера приведено ниже. Обратите внимание, что здесь предполагается использование имени userfile для поля выбора файла, как и в приведенном выше примере. На самом деле имя поля может быть любым.

$_FILES['userfile']['name']

Оригинальное имя файла на компьютере клиента.

$_FILES['userfile']['type']

Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Этот mime-тип не проверяется в PHP, так что не полагайтесь на его значение без проверки.

$_FILES['userfile']['size']

Размер в байтах принятого файла.

$_FILES['userfile']['tmp_name']

Временное имя, с которым принятый файл был сохранен на сервере.

$_FILES['userfile']['error']

Код ошибки, которая может возникнуть при загрузке файла. Этот элемент был добавлен в PHP 4.2.0

По умолчанию принятые файлы сохраняются на сервере в стандартной временной папке до тех пор, пока не будет задана другая директория при помощи директивы upload_tmp_dir конфигурационного файла php.ini. Директорию сервера по умолчанию можно сменить, установив переменную TMPDIR для окружения, в котором выполняется PHP. Установка этой переменной при помощи функции putenv() внутри PHP-скрипта работать не будет. Эта переменная окружения также может использоваться для того, чтобы удостовериться, что другие операции также работают с принятыми файлами.

Следующий пример принимает и обрабатывает загруженный при помощи формы файл:

<?php

// В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES

// вместо $_FILES.

 

$uploaddir = '/var/www/uploads/';

$uploadfile = $uploaddir. basename($_FILES['userfile']['name']);

 

echo '<pre>';

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {

echo "Файл корректен и был успешно загружен.\n";

} else {

echo "Возможная атака с помощью файловой загрузки!\n";

}

 

echo 'Некоторая отладочная информация:';

print_r($_FILES);

 

print "</pre>";

 

?>

PHP-скрипт, принимающий загруженный файл, должен реализовывать логику, необходимую для определения дальнейших действий над принятым файлом. Например, вы можете проверить переменную $_FILES['userfile']['size'], чтобы отсечь слишком большие или слишком маленькие файлы. Также вы можете использовать переменную $_FILES['userfile']['type'] для исключения файлов, которые не удовлетворяют критерию касательно типа файла, однако, принимайте во внимание, что это поле полностью контролируется клиентом, используйте его только в качестве первой из серии проверок. Начиная с PHP 4.2.0, вы можете использовать $_FILES['userfile']['error'] и коды ошибок при реализации вашей логики. Независимо от того, какую модель поведения вы выбрали, вы должны удалить файл из временной папки или переместить его в другую директорию.

В случае, если при отправке формы файл выбран не был, PHP установит переменную $_FILES['userfile']['size'] значением 0, а переменную $_FILES['userfile']['tmp_name'] - пустой строкой. none.

По окончанию работы скрипта, в случае, если принятый файл не был переименован или перемещен, он будет автоматически удален из временной папки.

PHP поддерживает возможность передачи массива из HTML в том числе и с файлами.

<form action="" method="post" enctype="multipart/form-data">

<p>Изображения:

<input type="file" name="pictures[]" />

<input type="file" name="pictures[]" />

<input type="file" name="pictures[]" />

<input type="submit" value="Отправить" />

</p>

</form>

 

<?php

foreach ($_FILES["pictures"]["error"] as $key => $error) {

if ($error == UPLOAD_ERR_OK) {

$tmp_name = $_FILES["pictures"]["tmp_name"][$key];

$name = $_FILES["pictures"]["name"][$key];

move_uploaded_file($tmp_name, "data/$name");

}

}

?>

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

Работа с файлами разделяется на 3 этапа:

· Открытие файла.

· Манипуляции с данными.

· Закрытие файла.

Открытие файла

Для того чтобы открыть файл в среде PHP используется функция fopen(). Обязательными параметрами этой функции является имя файла и режим файла.

$fp = fopen('counter.txt', 'r');

Согласно документации PHP выделяют следующие виды режимов файлов:

r – открытие файла только для чтения.

r+ - открытие файла одновременно на чтение и запись.

w – создание нового пустого файла. Если на момент вызова уже существует такой файл, то он уничтожается.

w+ - аналогичен r+, только если на момент вызова фай такой существует, его содержимое удаляется.

a – открывает существующий файл в режиме записи, при этом указатель сдвигается на последний байт файла (на конец файла).

a+ - открывает файл в режиме чтения и записи при этом указатель сдвигается на последний байт файла (на конец файла). Содержимое файла не удаляется.

Манипуляции с данными файла

Записывать данные в файл при помощи PHP можно при помощи функции fwrite(). Это функция принимает 2 обязательных параметра и 1 необязательный. В качестве обязательных параметров выступает дескриптор файла и режим файла:

<?php

$fp = fopen("counter.txt", "a"); // Открываем файл в режиме записи

$mytext = "Это строку необходимо нам записать\r\n";

// Исходная строка

$test = fwrite($fp, $mytext); // Запись в файл

if ($test) echo 'Данные в файл успешно занесены.';

else echo 'Ошибка при записи в файл.';

fclose($fp); //Закрытие файла

?>

Для построчного считывания файла используют функцию fgets(). Функция принимает 2 обязательных параметра:

<?php

// Открываем файл в режиме чтения

$fp = fopen("counter.txt", "r");

if ($fp)

{

while (!feof($fp))

{

$mytext = fgets($fp, 999);

echo $mytext."<br />";

}

}

else echo "Ошибка при открытии файла";

fclose($fp);

?>

Закрытие файла

Закрытие файла происходить с помощью функции fclose(), которая принимает 1 обязательный параметр.

<?php

$fp = fopen("counter.txt", "r");

if ($fp)

{

echo 'Файл открыт';

fclose($fp); // Закрытие файла

}

?>

 

Если нужно просто читать и писать блоки текста, то проще всего воспользоваться парой функций file_get_contents() и file_put_contents(). Первая функция считывает и возвращает данные из файла в виде строки, а вторая - записывает блок текста в указанный файл. Пользоваться этими функциями очень просто:

<?php

$content = file_get_contents('myfile.txt');

$content = str_replace('{user_name}', 'Иван Петрович', $content);

file_put_contents('myfile.txt', $content);

?>

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...