Контрольный вывод введенных значений формы
⇐ ПредыдущаяСтр 3 из 3 Когда страница формы PHP отправляется на сервер, все значения полей формы посылаются сценарию PHP с помощью метода формы get или post. Когда страница формы выводится снова, все поля формы будут пустыми, независимо от того, будут или нет значения допустимыми. Это происходит, потому что сервер извлекает новый экземпляр страницы PHP и посылает его браузеру. Однако пользователю было бы удобно, чтобы при повторном выводе формы ее поля были заполнены отправленной ранее информацией. В этом случае пользователю нужно будет только исправить ошибочные данные, а не заново вводить значения во все поля. Это не является проблемой для формы с двумя полями, однако будет крайне неудобно для формы с большим числом полей.
Когда страница формы отправляется и сервер извлекает новый экземпляр страницы PHP и посылает браузеру, значения полей формы могут динамически обновляться, так, чтобы поля не возвращались пустыми. В этом случае пользователю будет удобнее просто обновить поля, содержащие ошибки, а не все поля формы. Вспомните, что значения полей посланной формы хранятся в суперглобальных переменных $_POST или $_GET. В предыдущем примере имя пользователя хранится в переменной массива $_POST['FName'], а фамилия — в переменной массива $_POST['LName']. Поэтому вывод значений полей формы можно выполнить, присваивая атрибутам 'value' полей формы с помощью кода PHP значения, содержащиеся в массиве. Следующий код демонстрирует такой подход. process.php
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<form action="process.php" method="post">
First Name: <input type="text" name="FName" value="<?php echo $_POST['FName']?>"/> Last Name: <input type="text" name="LName" value="<?php echo $_POST['LName']?>"/>
<input type="submit" name="submit" value="Submit Data"/>
</form>
</body> </html> Отметим, что значения текстовых полей First Name и Last Name обновлены, чтобы включить следующий код PHP: <?php echo $_POST['FName']?> <?php echo $_POST['LName']?> Когда этот код присваивается атрибуту 'value', он снова выводит значения, введенные ранее пользователем. Когда страница загружается в первый раз, значения переменных POST будут NULL, а value = "". Атрибут value содержит значение только после того, как была нажата кнопка submit. Повторный вывод полей формы является полезным приемом, который будет активно использоваться в последующих разделах. Сеансы Переменная сеанса является специальным типом переменной, значение которой сохраняется при переходе между последовательными страницами Web. C помощью переменных сеанса специфические данные пользователя можно сохранять при переходе со страницы на страницу, предоставляя ему индивидуализированный контент при взаимодействии пользователя с приложением Web. Переменные сеанса существуют обычно, пока не выполняется одно из следующих событий:
Проблема, которую должны решить переменные сеанса, состоит в том, что протокол HTTP, используемый в Web, не имеет состояния. Каждый запрос страницы совершенно независим от предыдущих запросов, поэтому, если требуется, чтобы последующие страницы "запоминали" имя пользователя, которое он вводит на первой странице, то эту информацию надо где-то сохранить. Система PHP имеет ряд средств для поддержки сеансов. Это руководство начинается с введения глобальной переменной $_SESSION[]. Переменную $_SESSION[] рекомендуется использовать для улучшения безопасности и удобочитаемости кода.
Также вводятся функции сеанса session_start() и session_destroy(). Каждая из них определена ниже: $_SESSION[] – суперглобальный массив PHP, который содержит зарегистрированные в данный момент переменные сеанса сценария. session_start() – инициализация данных сеанса. Эта функция вызывается перед созданием новой переменной сеанса с помощью $_SESSION[]. session_destroy() – разрушает все данные, зарегистрированные для текущего сеанса сценария Функция PHP header("Location …") - это функция HTTP, а не функция сеанса, она обычно используется для перенаправления пользователей во время существующих сеансов. Эта функция определена ниже. header("Location: http://www.domain.com") – функция header используется для перенаправления браузера на страницу, определенную параметром Location. Следующий блок кода демонстрирует, как инициализируется переменная сеанса. <?php
session_start();
if ($_SESSION['count'] == "") {
$_SESSION['count'] = 1; }
else { $_SESSION['count'] = $_SESSION['count'] + 1;
}
?> В этом примере сначала вызывается функция session_start() для инициализации данных сеанса. Функция session_start() должна вызываться перед созданием и присваиванием значений переменным сеанса. Затем используется оператор if для проверки значения переменной сеанса "count". Если сеанс будет null или не содержит значения, то он инициализируется как 1, иначе значение переменной сеанса увеличивается на 1. В этом случае переменная сеанса count используется для подсчета числа посетителей. Переменные сеанса предоставляют идеальный способ создания счетчиков страниц, так как каждому пользователю предоставляется уникальный сеанс. Переменная сеанса может создаваться также после успешного ввода пользователем своего имени и пароля, которые нужны для доступа к конфиденциальному сайту. В этом случае переменная сеанса содержит значение, которое передается со страницы на страницу, указывая, что пользователь имеет право доступа к любым ресурсам, связанным с сайтом. Когда пользователь выходит или решает "завершить", переменная сеанса должна возвращаться в исходное состояние. Это выполняется с помощью функции session_destroy().
login.php
<?php if ($_POST['submit'] == "Login") {
// сценарий проверки имени пользователя и пароля должен кодироваться здесь
//если аутентификация прошла успешно session_start(); $_SESSION['access'] = "yes"; header(Location:access.php); }
if ($_POST['submit'] == "Log Out") {
//если пользователь решает выйти session_destroy(); }
?>
access.php
<?php // если пользователь обращается к этой странице, // проверьте, что он был аутентифицирован в login.php
if ($_SESSION['access']!= "yes") {
header(Location:login.php);
}
?> Пример выше состоит из двух страниц — login.php и access.php. Прежде чем пользователь сможет увидеть содержимое access.php, он должен пройти login.php. Создается сеанс, чтобы гарантировать, что пользователь был аутентифицирован. После того как пользователь вводит действительное имя пользователя и пароль, выполняется щелчок на кнопке "Login". Сценарий PHP проверяет, что пароль и имя пользователя допустимы. Затем переменной сеанса присваивается значение "yes" и доступ предоставляется. Пользователь перенаправляется на страницу access.php. Сценарий на access.php проверяет, что существует сеанс. Если сеанс не существует, применяется функция header(), чтобы перенаправить пользователя назад на страницу login.php и не разрешить доступ к содержимому страницы access.php. Страница login.php содержит второй сценарий, который используется для уничтожения переменной сеанса, вызывая функцию session_destroy(). Сценарий выполняется после того, как пользователь щелкает на кнопке "Log Out". Приложения Web, которые используют данные сеанса, могут быть доступны одновременно множеству пользователей. Чтобы каждый пользователь имел свой собственный сеанс, с каждым сеансом необходимо связать уникальное значение id. В PHP это уникальное значение сеанса id можно извлечь с помощью функции session_id(). Уникальное значение сеанса session_id() поддерживается для каждого пользователя и хранится в подкаталоге PHP/sessiondata, расположенном на сервере Web. Так как значение session_id() является уникальным для каждого пользователя, его можно применять для идентификации пользователей, не создавая при этом индивидуальных имен пользователей и паролей. Функция session_id() определена ниже:
session_id() – используется для получения значения id текущего сеанса.
Доступ к MySQL Используемые обычно функции PHP для MySQL описаны ниже. mysql_connect(имя сервера MySQL,имя пользователя,пароль) – открывает соединение с сервером MySQL. mysql_select_db(имя базы данных,идентификатор_соединения) – выбирает базу данных, расположенную на сервере MySQL. Параметр "имя базы данных" относится к активной базе данных на сервере MySQL, который был открыт с помощью функции mysql_connect. "Идентификатор_соединения" является ссылкой на текущее соединение с MySQL. mysql_query(запрос sql) – посылает запрос активной в данный момент базе данных. mysql_fetch_array(resourse result) – возвращает массив, который соответствует извлеченной строке, и перемещает внутренний указатель данных вперед. mysql_affected_rows(resourse result) – определяет число строк, затронутых предыдущей операцией SQL. mysql_close(link_identifier) – закрывает соединение MySQL. Прежде чем можно будет применять эти функции для создания приложений обработки данных с помощью MySQL, необходимо получить подходящий доступ к серверу MySQL. Для этого требуется учетная запись пользователя и пароль с полномочиями доступа к базе данных и таблицам, содержащим данные, а также имя хоста сервера MySQL или IP-адрес. При работе с сервером MySQL полезно также использовать инструменты управления с графическим интерфейсом, которые обеспечивают более легкий интерфейс использования данных. Популярными инструментами являются: SQLyog (доступный на http://www.webyog.com) и MySQL Administrator (доступный на http://www.mysql.com/products/tools/). Добавление записей С помощью рассмотренных в предыдущем разделе функций MySQL и языка SQL можно добавлять записи в таблицу базы данных. Записи добавляются с помощью формы, предоставляющей области для ввода информации. Нажатие кнопки вызывает затем сценарий PHP для записи новой информации в таблицу с помощью команды SQL INSERT. Типичная форма ввода для добавления новой записи в таблицу Survey показана ниже.
Поля формы именованы соответствующим образом: Name — 'Name', Email — 'Email', Web Connection — 'Connection', Residence (City/ST/Country) — 'Residence', Age — 'Age', Gender — 'Gender', Comments — 'Comments'. Прежде чем подробно рассматривать код, будет полезно посмотреть на синтаксис оператора SQL INSERT: INSERT INTO TableName (FieldName1 [,FieldName2]...) VALUES (Value1 [,Value2]...) Более подробное рассмотрение оператора INSERT дано в приложении. Следующий код используется для обработки данных формы VisitorSurvey.php: VisitorSurvey.php
<?php
if ($_POST[submit] == "Submit") {
//Получение данных формы и присвоение скалярным переменным
$Name = $_POST[Name]; $Email = $_POST[Email]; $Connection = $_POST[Connection]; $Residence = $_POST[Residence]; $Age = $_POST[Age]; $Gender = $_POST[Gender]; $Comments = $_POST[Comments];
//Установление соединения с базой данных
$conn = mysql_connect('localhost','root','xyxyxy');
//Выбор базы данных MySQL
$db = mysql_select_db('Membership', $conn);
//Оператор SQL
$sql = "INSERT INTO Survey ". "(Name,Email,Connection,Residence,Age,Gender,Comments) VALUES ('$Name', '$Email', '$Connection', '$Residence', '$Age', '$Gender', '$Comments')";
//Выполнение оператора SQL и сохранение результатов в множестве записей
$rs = mysql_query($sql,$conn);
mysql_close($conn);
}
?> После нажатия кнопки отправки Submit создается суперглобальный массив $_POST, содержащий значения из формы. Значения массива присваиваются скалярным переменным. Это упрощает кодирование оператора SQL. Затем выполняется оператор mysql_connect(). Этот оператор требует три параметра – имя хоста сервера MySQL, имя пользователя, и пароль. Здесь для соединения с базой данных MySQL используется строка соединения без DSN. Ссылка на соединение хранится в переменной $conn. Это пример ссылочной переменной PHP. В отличие от скалярных переменных и массивов, ссылочные переменные не применяются непосредственно в программе, но часто используются как параметры для других функций. После соединения с сервером базы данных MySQL следующий шаг состоит в выборе базы данных. Так как экземпляр сервера MySQL может содержать большое число баз данных, то задействуется функция mysql_select_db для выбора одной из них для использования в приложении. Эта функция требует два параметра – имя базы данных и ссылку на соединение MySQL. Вслед за выбором базы данных формируется оператор SQL INSERT и присваивается переменной $sql. Затем функция mysql_query() выполняет оператор SQL, создающий множество записей (множество записей базы данных). Это множество записей присваивается переменной $rs, еще одной ссылочной переменной PHP. Отметим, что функция mysql_query() требует два параметра — $sql (ссылка на текущий оператор SQL) и $conn (ссылка на текущее соединение с базой данных). Наконец, вызывается функция close() для закрытия текущего соединения с базой данных. Для таких приложений обычно желательно выполнять проверку данных, прежде чем заносить данные в таблицу базы данных. Это необходимо делать перед установлением соединения с базой данных. В случае ошибки кодирования данные не заносятся в таблицу базы данных, а PHP выведет предупреждение или сообщение об ошибке. В такой ситуации полезно подавить эти критические сообщения, добавить код для проверки ошибок вручную и сгенерировать более понятный для пользователя вывод. Это можно делать сразу после оператора mysql_query(), проверяя статус вновь созданного множества записей — $rs. Предположим, что в предыдущем коде функция mysql_query() содержит вместо $sql параметр $sqlString. В этом случае PHP немедленно прекратит выполнение страницы и выведет сообщение об ошибке. Вывод сообщения об ошибке PHP можно подавить с помощью оператора управления ошибками "@". При подавленном сообщении об ошибке можно добавить код для создания более понятного пользователю сообщения. Такой подход показан ниже: VisitorSurvey.php
<?php
if ($_POST[submit] == "Submit") {
//Получение данных формы и присвоение скалярным переменным
$Name = $_POST[Name]; $Email = $_POST[Email]; $Connection = $_POST[Connection]; $Residence = $_POST[Residence]; $Age = $_POST[Age]; $Gender = $_POST[Gender]; $Comments = $_POST[Comments];
//Установление соединения с базой данных
$conn = @mysql_connect('localhost','root','xyxyxy');
//Выбор базы данных MySQL
$db = @mysql_select_db('Membership', $conn);
//Оператор SQL
$sqlstring = "INSERT INTO Survey ". "(Name,Email,Connection,Residence,Age,Gender,Comments) VALUES ('$Name', '$Email', '$Connection', '$Residence', '$Age', '$Gender', '$Comments')";
//Выполнение оператора SQL и сохранение результатов в виде множества записей
$rs = @mysql_query($sqlstring,$conn);
if (!$rs) {
echo "Произошла ошибка. Попробуйте еще раз.";
}
else
{
echo "Запись была успешно добавлена.";
}
mysql_close($conn);
}
?>
Вслед за функцией mysql_query() используется оператор if для проверки статуса множества записей $rs. Если множество записей успешно создается, выводится сообщение "Запись была успешно добавлена". Если возникает проблема, выводится сообщение "Произошла ошибка. Попробуйте еще раз." Выбор записей Следующий код используется для обработки формы DirectorySearch.php: DirectorySearch.php
<?php
if ($_POST[submit] == "Search") {
//Получение данных формы
$string = $_POST['search'];
//Установление соединения с данными
$conn = mysql_connect('localhost','root','xyxyxy');
//Выбор базы данных
$db = mysql_select_db('Membership', $conn);
//Создание оператора SQL SELECT
$sql = "SELECT * FROM Directory WHERE LName = '$string'";
$rs = mysql_query($sql, $conn); }
?>
<!DOCTYPE html PUBLIC "-//W3C/DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title>
</head>
<body>
<form action="DirectorySearch.php" method="post"> <p>Введите ниже фамилию и нажмите кнопку "Search", чтобы найти номер телефона и адрес e-mail сотрудника</p> <table> <tr> <td colspan="2">Company XYZ Directory</td> </tr> <td><input type="text" size="15" name="SearchName"/></td> <td><input type="submit" value="Search" name="submit"/> </tr> </table> </form>
<div>
<?php
if(!empty($_POST)) { while($row = mysql_fetch_array($rs)) { echo "Name: ".$row['FName']. " "; echo $row['LName']. "<br/>"; echo "Telephone: ". $row['Telephone']. "<br/>"; echo "Email: ". $row['Email']. "<br/>"; } mysql_close($conn); } ?>
</div> </body> </html> Эта страница содержит два блока кода PHP. Первый выполняется, когда нажимается кнопка отправки формы "Search". Введенная пользователем фамилия присваивается скалярной переменной '$string'. Затем создается соединение с базой данных и формируется оператор SQL SELECT для выбора всех (*) полей таблицы записей, в которых поле 'lastname' совпадает со строкой фамилии, введенной пользователем. В конце выполняется оператор SQL. Если найдены подходящие записи, то множество записей присваивается переменной '$rs'. Второй блок кода появляется в теле документа HTML. Код, содержащий операторы echo или print, помещается обычно между открывающим и закрывающим тегами <body>, так что он может выводиться или форматироваться в соответствии с другими элементами страницы. Операторы echo и print, появляющиеся в блоках PHP, закодированные выше тега <html>, всегда появляются в верху страницы и предшествуют всем другим ее элементам. Назначение этого блока кода состоит в выводе извлеченных записей, если в предыдущем блоке кода был выполнен оператор SQL. Сначала используется оператор if для проверки, что массив $_POST не является пустым. Если этот массив будет пустым, то это означает, что форма не была отправлена, и никакие записи не были извлечены. Если этот условный оператор отсутствует, то будет возникать ошибка, так как массив mysql_fetch_array не будет содержать никаких значений. Затем используется цикл while для итераций по множеству записей. Во время каждой итерации по множеству записей функция mysql_fetch_array() создает ассоциативный массив (здесь этот массив назван $row), содержащий значения полей текущей записи. Индексы массива соответствуют именам полей формы, а элемент массива соответствует значению поля. Каждая запись затем выводит $row['FName'] — значение поля 'FirstName', $row['LName'] -- значение поля 'LastName', $row['Telephone'] – значение поля 'Telephone', и $row['Email'] – значение поля 'Email'. Этот процесс продолжается, пока не будет достигнут конец множества записей, при этом массив $row каждый раз будет содержать новые значения. После вывода всех записей соединение с базой данных закрывается с помощью функции mysql_close(). Ниже представлен пример вывода, созданного после поиска в каталоге.
Если пользователь ищет фамилию, которая не существует в таблице базы данных, то никакие записи не выводятся. Чтобы предотвратить путаницу, приведенный выше сценарий можно немного изменить так, что будет выводиться соответствующее сообщение, если подходящие записи не будут найдены. DirectorySearch.php
<?php
if(!empty($_POST)) {
while($row = mysql_fetch_array($rs))
{
echo "Name: ".$row['FName']. " "; echo $row['LName']. "<br/>"; echo "Telephone: ". $row['Telephone']. "<br/>"; echo "Email: ". $row['Email']. "<br/>";
}
if (mysql_affected_rows($rs) == 0)
{
echo "No records found!";
}
mysql_close($conn); } ?>
</div> </body> </html> Показанный выше измененный сценарий содержит дополнительно функцию mysql_affected_rows(). Эта функция требует один параметр – ссылку на текущее множество записей $rs и определяет число строк, затронутых последней операцией SQL. Если возвращаемое функцией mysql_affected_rows() значение равно 0, то оператор SQL SELECT не затронул ни одной строки. Поэтому подходящих записей найдено не было. Удаление записей Оператор SQL DELETE используется для удаления существующих записей в базе данных. Синтаксис оператора SQL DELETE показан ниже: DELETE FROM Имя_Таблицы WHERE критерий Более подробно оператор DELETE рассматривается в приложении. Следующая форма представляет запись пользователя, которая будет удалена из таблицы базы данных Personnel. Щелчок на кнопке Delete вызывает процедуру PHP, которая выполняет оператор SQL DELETE для удаления этой записи из таблицы базы данных.
Кроме показанных выше элементов управления формы, страница включает также скрытое текстовое поле с именем "AutoNum" со значением, равным полю AutoNum таблицы базы данных. Это поле используется для уникальной идентификации каждой записи. Следующий код демонстрирует, как работает страница: DirectorySearch.php
<?php
if ($_POST['submitb']=="Delete Record") {
$conn = mysql_connect('localhost','root','xyxyxy'); $db = mysql_select_db('Membership',$conn); $sqlDelete = "DELETE FROM Personnel WHERE AutoNum =". $_POST['AutoNum']; $rsDelete = mysql_query($sqlDelete,$conn);
if(mysql_affected_rows($rsDelete) == 1) {
echo "Запись успешно удалена!";
}
mysql_close($conn);
}
?> После нажатия кнопки "Delete Record" устанавливается соединение с базой данных MySQL. Затем создается оператор SQL DELETE для удаления записи из таблицы Personnel со значением поля AutoNum, равным значению скрытого текстового поля AutoNum. Затем оператор SQL выполняется. Результаты работы функции mysql_query() присваиваются переменной $rsDelete. Последний шаг состоит в проверке, что удаление записи прошло успешно, и в выводе подтверждающего сообщения. Функция mysql_affected_rows() используется для определения числа строк в множестве результатов ODBC или числа строк, затронутых оператором mysql_query(). Так как будет удалена только одна запись, то результат mysql_affected_rows() равный 1 означает, что запись удалена успешно. В конце соединение с базой данных закрывается. Открытие файлов PHP предоставляет доступ к файлам в операционных системах Windows и Unix для чтения, записи или добавления содержимого. Этот раздел описывает, как использовать PHP для открытия файлов в системах Windows. PHP содержит функции fopen() и fclose() для работы с файлами. Обе функции определяются ниже. fopen(имя_файла, режим) - функция используется для открытия файла. Для функции требуется задать имя файла и режим работы. Она возвращает указатель на файл, который содержит информацию о файле и используется в качестве ссылки. fclose(указатель_ресурса) – функция используется для закрытия файла. Для функции требуется указатель файла, созданный при открытии файла с помощью функции fopen(). Возвращает TRUE при успешной работе или FALSE при отказе. Имя файла является полным путем доступа к файлу, который требуется создать или открыть. Этот путь доступа может быть относительным путем доступа к файлу: "/Documents and Settings/Administrator/PHP/myfile.txt" или абсолютным путем доступа к файлу: "E:/MyFiles/PHP/myfile.txt". Для каждого определенного каталога необходимо иметь подходящие права NTFS для создания, модификации или удаления файлов. Режим может быть одним из следующих. Режимы, используемые в fopen()
Следующий пример показывает, как открыть файл для чтения: fileprocess.php
<?php
$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";
$newfile = fopen($filename, "w+");
//код для чтения или записи данных в файл располагается здесь
fclose($newfile);
?> Первый шаг состоит в создании переменной для хранения всего пути доступа к файлу, который будет открыт: $filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и применяется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла является ссылочной переменной PHP, используемой для ссылки на только что открытый файл: $newfile = fopen($filename, "w+"); Указатель файла будет использован позже для чтения и записи содержимого в открытый файл. В некоторых ситуациях функция fopen() не сможет успешно открыть файл в результате неверного пути доступа к файлу, полномочий безопасности или других непредвиденных проблем. В связи с этим рекомендуется использовать специальную функцию PHP для аккуратной обработки таких ошибок. Эти функции можно применять в сочетании с оператором управления ошибками PHP "@" для завершения сценария, подавления создаваемых PHP сообщений об ошибках, и вывода более понятного пользователю сообщения. Функции управления ошибками PHP описаны ниже: exit(сообщение_об_ошибке) – завершает текущий сценарий и выводит сообщение об ошибке, передаваемое в функцию. die(сообщение_об_ошибке) – алиас функции exit(). Следующий сценарий демонстрирует использование функций управления ошибками: fileprocess.php
<?php
$filename = "C:/Documents and Settings/Administrator/MyFiles/ myfile.txt";
$newfile = @fopen($filename, "w+") or exit("Невозможно открыть или создать файл");
//код для чтения или записи данных в файл размещается здесь
fclose($newfile);
?> Если файл невозможно открыть, функция exit() выводит сообщение " Невозможно открыть или создать файл" и сценарий завершается. Если файл открывается успешно, то содержимое можно читать из файла, записывать в файл, или добавлять к файлу в зависимости от используемого в функции fopen() режима. Подробнее эти действия будут рассмотрены в следующих разделах. После завершения обработки всего файла применяется функция fclose() для закрытия открытого файла. Чтение файлов Этот раздел описывает, как использовать PHP для чтения содержимого файлов в системах Windows. Для чтения файлов в PHP имеются функции fread() и filesize(). Они определяются ниже. fread(указатель_ресурса, длина) – функция, используемая для чтения содержимого файла. Читает указанное количество байтов "длина" из файла "указатель_ресурса". Чтение останавливается, когда будет прочитано заданное количество байтов ("длина") или будет достигнут маркер EOF (end of file). Функция требует два параметра – указатель файла, который создается, когда файл открывается с помощью функции fopen(), и размер, который определяет, какая часть содержимого будет считана. fgetcsv(указатель_ресурса, длина, ограничитель) – функция, используемая для чтения содержимого файла и анализа данных для создания массива. Данные разделяются параметром-ограничителем, задаваемым в функции. filesize(имя_файла) – возвращает размер файла. Если возникает ошибка, функция возвращает значение false. Следующий пример иллюстрирует, как прочитать все содержимое файла: fileread.php
<?php
$filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt";
$newfile = @fopen($filename, "r") or exit("Невозможно открыть файл!");
$file_contents = @fread($newfile, filesize($filename)) or exit("Невозможно прочитать содержимое файла!");
fclose($newfile);
?> Первый шаг состоит в создании переменной для хранения полного пути доступа к файлу, который будет открыт для чтения: $filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; Путь доступа к текстовому файлу myfile.txt хранится в переменной с именем filename. Затем создается указатель файла с именем $newfile и используется с функцией fopen() для открытия файла, указанного в предыдущем разделе. Указатель файла применяется для ссылки на только что открытый файл: $newfile = fopen($filename, "r"); Указатель файла является переменной PHP, которая содержит ссылку на открытый файл. Он будет задействован позже с функцией fread() для чтения содержимого из открытого файла. Затем создается переменная с именем $file_contents и используется для хранения содержимого текстового файла myfile.txt. Первый параметр функции fread() указывает на имя файла, содержимое которого будет прочитано. Второй параметр определяет длину файла. Если длина файла неизвестна, можно воспользоваться специальной функцией PHP с именем filesize(), которая определяет длину файла. Она требует один параметр – имя или путь доступа файла, который читается в данный момент. $file_contents = fread($newfile, filesize($filename)); Все содержимое текстового файла хранится теперь в переменной $file_contents. Эти данные можно выводить на экране с помощью оператора echo или записать в другой текстовый файл. В некоторых случаях может понадобиться прочитать и работать с отдельными частями содержимого текстового файла. При использовании fread() все содержимое файла хранится в одной переменной, что затрудняет работу с отдельными частями файла. Если текстовый файл содержит разграничители для разделения отдельных фрагментов данных, можно применить для чтения другую функцию чтения — fgetcsv(). Эта функция читает содержимое файла и создает массив, делая доступными определенные части текста. Предположим, что текстовый файл numbers.txt существует и содержит следующие данные: numbers.txt <
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|