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

SQL-операторы с кавычками или обратными слэшами

Action

Используется для ввода URL, куда отправляется форма. Это может быть PHP-файл, который обрабатывает ввод.

Method

Может иметь значение "post" или "get", которые являются различными методами передачи данных. Пока вам нет необходимости углубляться в отличия этих методов; методом "get" данные отправляются через URL, а методом "post" - как блок данных через стандартный сервис ввода/standard input service (STDIN). В последнем пройденном уроке мы видели, как данные получаются через URL с использованием $_GET. В этом уроке мы рассмотрим, как получаются данные, отправленные через форму методом "post".

HTML-страница с формой

Страница с формой не обязаны быть РНР-файлом (но может быть). Она даже не обязана находиться на том же сайте, что и файл, который получает данные.

В нашем первом примере мы рассмотрим очень простую форму с одним текстовым полем:

 

<html>

<head>

<title>Форма</title>

</head>

<body>

 

<h1>Введите ваше имя</h1>

 

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

<input type="text" name="username">

<input type="submit">

</form>

 

</body>

</html>

 

В браузере отобразится форма:

Теперь начинается самое интересное: получение и обработка данных с помощью PHP.

Запрашивание данных формы с помощью PHP

Если вам необходимо запросить данные, отправленные через форму (методом post), вы используете $_POST:

 

$_POST["fieldname"];

 

 

который возвратит значение поля формы. Попробуем это на примере.

Сначала создадим страницу с формой, как ранее. Затем создадим РНР-страницу (обработчик) "handler.php" (обратите внимание, что это имя страницы, которое мы записали в атрибуте action в нашей <form>).

Файл "handler.php" будет содержать:

 

<html>

<head>

<title>Форма</title>

</head>

 

<body>

 

<?php

 

echo "<h1>Привет, ". $_POST["username"]. "</h1>";

 

?>

 

</body>

</html>

 

 

Отображение примера

Пользовательский ввод и условия

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

 

<html>

<head>

<title>Форма</title>

</head>

<body>

 

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

 

<p>Как вас зовут:</p>

<input type="text" name="username"></p>

 

<p>Ваш любимый цвет:

<input type="radio" name="favoritecolor" value="r" /> Красный

<input type="radio" name="favoritecolor" value="g" /> Зелёный

<input type="radio" name="favoritecolor" value="b" /> Синий </p>

 

<input type="submit" value="Submit" />

 

</form>

 

</body>

</html>

 

 

В браузере это будет так:

Теперь используем эти вводы для создания страницы, которая автоматически изменяет цвет фона на основе указаний пользователя. Это делается созданием условия (см. Урок 6), которое использует данные, введённые пользователем в форму.

<?php

 

$strHeading = "<h1>Привет, ". $_POST["username"]. "</h1>";

 

switch ($_POST["favoritecolor"]) {

case "r":

$strBackgroundColor = "rgb(255,0,0)";

break;

case "g";

$strBackgroundColor = "rgb(0,255,0)";

break;

case "b":

$strBackgroundColor = "rgb(0,0,255)";

break;

default:

$strBackgroundColor = "rgb(255,255,255)";

break;

}

 

?>

 

<html>

<head>

<title>Форма</title>

 

</head>

<body style="background: <? echo $strBackgroundColor;?>;">

 

<? echo $strHeading;?>

 

</body>

</html>

 

 

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

Но что будет, если пользователь не укажет своё имя? Тогда в заголовке будет только "Привет,". Создадим дополнительное условие для изменения этого варианта.

 

<?php

 

$strUsername = $_POST["username"];

 

if ($strUsername!= "") {

$strHeading = "<h1>Привет, ". $_POST["username"]. "</h1>";

}

else {

$strHeading = "<h1>Привет, незнакомец!</h1> ";

}

 

switch ($_POST["favorite color"]) {

case "r":

$strBackgroundColor = "rgb(255,0,0)";

break;

case "g";

$strBackgroundColor = "rgb(0,255,0)";

break;

case "b":

$strBackgroundColor = "rgb(0,0,255)";

break;

default:

$strBackgroundColor = "rgb(255,255,255)";

break;

}

 

?>

 

<html>

 

<head>

 

<title>Форма</title>

</head>

<body style="background: <? echo $strBackgroundColor;?>;">

 

<? echo $strHeading;?>

 

</body>

</html>

 

Отобразить пример.

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

Пример: Форма контактной информации

Основываясь на имеющихся знаниях о PHP и формах, вы можете создать форму контактной информации с использованием функции mail, которая имеет следующий синтаксис:

 

mail (куда, субъект, сообщение);

 

 

Сначала создаём простую HTML-форму:

 

<html>

<head>

<title>Форма контактной информации</title>

</head>

<body>

 

<h1>Форма контактной информации</h1>

 

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

<p>Субъект:<br /><input type="text" name="subject" /></p>

<p>Сообщение:<br /><textarea name="message"></textarea></p>

<input type="submit">

</form>

 

</body>

</html>

 

 

Затем понадобится РНР-скрипт для отправки пользовательского ввода:

 

<html>

<head>

<title>Функции</title>

</head>

<body>

 

<?php

 

// Получатель (измените на ваш e-mail адрес)

$strEmail = "[email protected]";

 

// Получить пользовательские вводы

$strSubject = $_POST["subject"];

$strMessage = $_POST["message"];

 

mail($strEmail,$strSubject,$strMessage);

echo "Mail Sent.";

 

 

?>

 

</body>

</html>

 

 

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

 

mail ("вы@имявашегодомена.com", "Тест", "Это тестовое сообщение", "От: мне@мойдомен.com");

 

 

Урок 12: Сессии

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

Это очень важно учитывать при создании успешных вэб-проектов.

Предположим, например, что вы хотите создать сайт, на котором несколько страниц защищены логином и паролем. Чтобы эта защита действовала эффективно, защищённые паролем страницы должны иметь доступ к информации о том, зашёл ли пользователь ранее в систему. Вы должны, иначе говоря, "помнить", что пользователь делал до этого.

Именно об этом наш урок - как использовать сессии в PHP для сохранения и получения информации в процессе визита пользователя на наш сайт.

Сессии

РНР-сессии дают возможность работать с информацией о пользовательской сессии. Вы можете создавать приложения, которые идентифицируют и собирают информацию о пользователях.

Сессии могут начинаться разными способами. Мы не будем углубляться в технические тонкости, а сконцентрируемся на варианте, когда сессия начинается с сохранения значения. Сессия заканчивается/загибается (dies), если пользователь не запрашивает страниц в течение какого-то времени (стандартное значение - 20 минут). Разумеется, вы в любой момент можете закончит/убить сессию в вашем скрипте.

Скажем, 50 пользователей просматривают страницы одного сайта, например, вэб-шоп. Информацию о том, что у каждого посетителя в корзине, лучше всего сохранить в сессии. Чтобы идентифицировать пользователей, сервер использует уникальные пользовательские идентификаторы/user ID, которые хранятся в куках. Кука это небольшой текстовый файл, хранимый на компьютере пользователя (см. Урок 13). Следовательно, сессии часто требуют поддержки кук в браузерах пользователей.

Пример использования сессий

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

Я назвал элемент "StartTime" и сохранил его, добавив следующую строку в мой РНР-скрипт:

 

<?php

 

session_start();

$_SESSION["StartTime"] = date("r");

 

?>

 

 

Таким образом, сессия началась. Как сказано выше, каждая сессия получает ID от сервера.

Ваша сессия имеет следующий ID: 6361a281004f7d6d6078832a148c4e07

В любое время я могу вызвать "StartTime" из сессии, введя:

 

<?php

 

session_start();

echo $_SESSION["StartTime"];

 

?>

 

 

что покажет, что страница была запрошена в (в соответствии с временем данного вэб-сервера).

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

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

 

<?php

 

session_destroy();

 

?>

 

 

Посмотрим другой пример использования сессий: с паролем.

Логин в систему с сессиями

В следующем примере мы создадим простейшую систему с логином. Используем многое из того, что изучили на предыдущих занятиях.

Первое, что необходимо, это форма, в которой люди могу указывать username и password. Она может выглядеть так:

 

<html>

<head>

<title>Login</title>

 

</head>

<body>

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

 

<p>Username: <input type="text" name="username" /></p>

<p>Password: <input type="text" name="password" /></p>

 

<p><input type="submit" value="Let me in" /></p>

 

</form>

</body>

</html>

 

Затем создадим файл login.php.

В этом файле мы проверяем, введены ли корректные username и password. Если это так, мы начинаем сессию, в которой указано, что пользователь вошёл с корректными username и password.

<html>

 

<head>

<title>Login</title>

 

</head>

<body>

 

<?php

 

// Проверить корректность username и password

if ($_POST["username"] == "php" && $_POST["password"] == "php") {

 

// Если корректны, устанавливаем значение сессии в YES

session_start();

$_SESSION["Login"] = "YES";

echo "<h1>Вы зашли некорректно</h1>";

echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";

 

}

else {

 

// Если некорректны, устанавливаем сессию в NO

session_start();

$_SESSION ["Login"] = "NO";

echo "<h1>Вы зашли НЕкорректно </ h1>";

echo "<p><a href='document.php'>Ссылка на защищённый файл</a><p/>";

 

}

 

?>

 

</body>

</html>

 

При работе с защищёнными файлами мы проверяем, вошёл ли пользователь с корректным логином. Если нет, the пользователь отправляется обратно к логин-форме. Вот как делается эта защита:

 

<?php

 

// Начать вашу РНР-сессию

session_start();

 

// Если пользователь не зашёл, отправить его/её к логин-форме

if ($_SESSION["Login"]!= "YES") {

header("Location: form.php");

}

 

?>

 

<html>

<head>

<title>Логин</title>

</head>

 

<body>

<h1>Этот документ защищён</h1>

 

<p>Вы можете получить к нему доступ, только если вошли в систему.</p>

</body>

</html>

 

 

Нажмите здесь для проверки логин-системы

Вы получили представление об объекте Session. В следующем уроке мы продолжим работу в этом же направлении, но также подробнее познакомимся с куками.

Урок 13: Куки

Крайне важно, Как и какую информацию вэб-сайты собирают у пользователей, в особенности как её используют. Куки часто упоминаются как пример того, что информация собирается и ставит под угрозу вашу секретность. Но есть ли повод для волнения? Судите сами. Пройдя этот урок, вы узнаете, что можно делать с куками.

Что такое кука?

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

Срок годности большинства кук истекает после предопределённого периода времени (они самоудаляются), и этот период может варьироваться от одной минуты до нескольких лет. Но пользователь и сам может удалять любые куки на своём компьютере.

Большинство браузеров, таких как Microsoft Internet Explorer, Mozilla Firefox и Google Chrome, могут быть сконфигурированы так, что пользователь может решать, принимать ли куки. Но тогда почему не сказать "нет" всем кукам? Это возможно. Но многие сайты не будут работать соответствующим образом без кук, поскольку куки во многих контекстах используются для улучшения функциональности сайтов.

Как информация хранится в куке?

В РНР легко установить или настроить куку с помощью setcookie. В первом примере мы создадим куку и установим её значение.

Прежде всего нужно дать куке имя. В данном примере используем "HTMLTest". Далее вы устанавливаете значение куки:

 

<?php

 

// Установка куки

setcookie("HTMLTest", "Это тестовая кука");

 

?>

 

 

По умолчанию кука хранится, пока не закроется браузер, но это легко изменить, добавив другой параметр - установив срок годности:

 

<?php

 

// Установка куки

setcookie("Name", "C. Wing, time()+3600);

setcookie("Interests", "plane spotting", time()+3600);

 

?>

 

 

"Time()+3600" специфицирует, что кука должна действовать 3600 секунд (60 минут) с данного момента.

В вышеприведённом примере мы сохранили информацию об имени пользователя и его интересах. Эта информация может пригодиться, например, для настройки сайта под конкретного посетителя.

Как вы запрашиваете значение куки?

Для получения значения куки используется $_COOKIE. Например, если вам необходима информация из предыдущего примера, мы делаем так:

 

<?php

 

// Запросить значение куки

$strName = $_COOKIE["Name"];

strInterest = $_COOKIE["Interest"];

 

// Вывести клиенту

echo "<p>". strName. "</p>"

echo "<p>Вас интересует. " strInterest. "</p>"

 

?>

 

 

Кто может читать куки?

По умолчанию куки читаются на том же домене второго уровня (например, html.net), на котором они созданы. Применяя параметры domain и path, вы можете внести ограничения на использование куки, используя такой синтаксис:

 

setcookie (name, value, expiration time, path, domain);

 

 

Посмотри пример:

 

<?php

 

// Установка куки: name, value, expiration time, path, domain

setcookie("Name", "C. Wing", time()+60*60*24*365, "/tutorials/php/", "www.html.net");

?>

 

 

В вышеприведённом примере мы установили куку "Name" со значением "C. Wing." Срок действия куки истекает через год (60 секунд * 60 минут * 24 часов * 365 дней), и она может читаться только сайтами, размещёнными в директории "/tutorials/php/" на (суб-)домене "www.html.net".

Пример куки

Можно попробовать сохранить сэмпл куки на вашем компьютере и потом посмотреть, как она выглядит.

Вот код установки куки:

 

<?php

 

// Установит куку

setcookie("HTMLTest", "Этот текст - кука!", time()+60*60*24, "/tutorials/php/", "www.html.net");

 

// Записать информацию клиенту

echo $_COOKIE ["HTMLTest"];

 

?>

 

 

Отображение примера

Кука размещается на ваш жёсткий диск. В зависимости от вашей операционной системы ваши куки могут сохраняться в разных местах. Когда вы их найдёте, они могут выглядеть примерно так:

Как видите, кука это нормальный текстовый файл, который можно открыть с помощью Notepad, например. Содержимое куки, которую мы только что создали, может выглядеть примерно так:

 

HTMLTest TEXT=This+text+is+in+a+cookie% 21 www.html.net/tutorials/php 0 80973619229399148 4216577264 29399141 *

 

 

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

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

Если вы решите использовать куки на вашем сайте, неплохо сообщить об этом вашим друзьям. Это можно сделать, например, в условиях пользования сайтом или в процессе регистрации.

Урок 14: Файловая система

С помощью PHP вы можете получить доступ к файловой системе сервера. Это даёт возможность работать с папками и текстовыми файлами в РНР-скриптах.

Например, можно использовать PHP для чтения и записи текстовых файлов. Либо можно получить список всех файлов в папке. Возможностей много, и РНР может избавить вас от рутинной работы.

Здесь мы посмотрим, как можно использовать РНР для работы с файлами и папками. Цель - дать вам общее представление. В следующих уроках мы более подробно рассмотрим эти возможности. Полный список см. в документации.

filemtime

Возвращает время, когда файл в последний раз редактировался (в виде UNIX timestamp - см. Урок 4)).

fileatime

Возвращает время, когда к файлу в последний раз осуществлялся доступ (в виде UNIX timestamp - см. Урок 4)).

filesize

Возвращает размер файла, в байтах.

Попробуем определить эти три свойства файла: "/tutorials/php/lesson14.php"

 

<html>

 

<head>

<title>Файловая система</title>

</head>

<body>

 

<?php

 

// Найти и записать свойства

echo "<h1>file: lesson14.php</h1>";

echo "<p>В последний раз редактировался: ". date("r", filemtime("lesson14.php"));

echo "<p>В последний раз был открыт: ". date("r", fileatime("lesson14.php"));

echo "<p>Размер: ". filesize("lesson14.php"). " байт";

 

?>

 

</body>

</html>

 

 

Отображение примера

Папки

PHP позволяет также работать с папками на сервере. Мы не будем рассматривать все возможности - только покажем на примере. Не забывайте смотреть документацию.

opendir

Открывает специфицированную папку/директорию.

readdir

Возвращает имя следующего файла в открытой папке (соотв. opendir)

closedir

Закрывает специфицированную папку/директорию.

В примере создаётся листинг папки "tutorials/php/".

 

<html>

<head>

<title>FileSystemObject</title>

</head>

<body>

 

<?php

 

// Открыть папку

$folder = opendir("../../tutorials/php/");

 

// Цикл по всем файлам папки

while (readdir($folder)!= "") {

echo readdir($folder). "<br />";

}

 

// Закрыть папку

$folder = closedir($folder);

 

?>

 

</body>

 

</html>

 

 

Отображение примера

В этом примере сначала открывается директория "../../tutorials/php/". Затем используется цикл для написания имени следующего файла в папке, если файлы ещё есть. В конце папка закрывается.

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

Урок 15: Чтение из текстового файла

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

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

Открыть текстовый файл

Для открытия текстового файла используем функцию fopen. Вот её синтаксис:

 

fopen(filename, mode)

 

 

Filename

Имя открываемого файла.

Mode

Mode/Режим может быть "r" (reading/чтение), "w" (writing/запись) или "a" (appending/присоединение). В этом уроке мы будем только читать из файла и, соответственно, используем "r". В следующем уроке мы научимся записывать и присоединять текст.

Примеры этого урока используют файл unitednations.txt. Это простой список программ и фондов ООН и их доменов. Можете загрузить этот файл или создать свой и использовать его в примерах.

Сначала попробуем открыть unitednations.txt:

 

<?php

 

// Открыть текстовый файл

$f = fopen("unitednations.txt", "r");

 

// Закрыть текстовый файл

fclose($f);

 

?>

 

Пример 1: Чтение строки из текстового файла

С помощью функции fgets можно читать строку из текстового файла. Этот метод читает до первого символа переноса строки (но не включая символ переноса строки).

 

<html>

 

<head>

<title>Чтение из текстовых файлов</title>

</head>

<body>

 

<?php

 

$f = fopen("unitednations.txt", "r");

 

// Читать строку их текстового файла и записать содержимое клиенту

echo fgets($f);

 

fclose($f);

 

?>

 

</body>

</html>

 

 

Отображение примера

Пример 2: Чтение всех строк текстового файла

 

<html>

 

<head>

<title>Чтение из текстовых файлов</title>

</head>

<body>

 

<?php

 

$f = fopen("unitednations.txt", "r");

 

// Читать построчно до конца файла

while(!feof($f)) {

echo fgets($f). "<br />";

}

 

fclose($f);

 

?>

 

</body>

</html>

 

 

Отображение примера

В этом примере мы выполняем цикл по всем строкам и используем функцию feof (for end-of-file/до конца файла) для проверки достижения конца файла. Если конец не достигнуть ("!" - см. Урок 6), строка записывается.

Вместо цикличного прохода по всем строкам мы можем получить тот же результат функцией fread. При работе с очень большими текстовыми файлами помните, что fread использует больше ресурсов, чем fgets. Для маленьких файлов разница в работе несущественна.

Пример 3: Простая директория ссылок

Как сказано в начале этого урока, текстовые файлы могут отлично подойти для хранения данных. Это показано на следующем примере, где создаётся простая директория ссылок из содержимого файла unitednations.txt.

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

Для получения информации из каждой строки используем массив. См. в Уроке 8 о массивах.

 

<html>

<head>

<title>Чтение из текстовых файлов</title>

 

</head>

<body>

 

<?php

$f = fopen("unitednations.txt", "r");

 

// Читать построчно до конца файла

while (!feof($f)) {

 

// Создать массив с запятой-разделителем

$arrM = explode(",",fgets($f));

 

// Записать ссылки (получить данные из массива)

echo "<li><a href='http://". $arrM[1]. "'>". $arrM[0]. "</a></li>";

 

}

 

fclose($f);

?>

 

</body>

</html>

 

 

Отображение примера

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

В следующем уроке мы мы посмотрим, как записать в текстовый файл.

Урок 16: Запись в текстовый файл

В предыдущем уроке мы научились читать из текстового файла. В этом уроке будем записывать в него.

Эти два метода очень похожи, но есть одно важное отличие: для записи необходимо наличие права на запись. Это значит, что должен размещаться в директории, в которой у вас есть необходимые права.

Если вы работаете локально на своём компьютере, то можете сами установить права: щёлкните правой мышью на папке и выберите "Свойства/Properties". На большинстве вэб-хостов обычно имеется только одна папка с правами записи. Часто она называется "cgi-bin", "log", "databases" и т. п. Если ваш вэб-хост допускает, можно устанавливать права самостоятельно. Обычно можно щёлкнуть правой мышью на папке в FTP-клиенте и выбрать "properties" или "permissions" ил что-то похожее. Скриншот ниже показывает, как это выглядит в FileZilla.

См. также страницы поддержки ваших вэб-хостов.

Обратите внимание, что именно текстовый файл должен находиться в папке с правами на запись, а не РНР-файл.

Открытие текстового файла для записи

Как и при чтении текстового файла, функция fopen используется при записи, но на этот раз режим устанавливается "w" (writing) или "a" (appending).

Разница между writing и appending в том, как размещается 'курсор' - в начале или в конце текстового файла.

В примерах этого урока используется пустой текстовый файл textfile.txt. Но вы можете создать свой собственный файл, если желаете.

Сначала попробуем открыть этот текстовый файл для записи:

 

<?php

 

// Открыть текстовый файл

$f = fopen("textfile.txt", "w");

 

// Закрыть текстовый файл

fclose($f);

 

?>

 

 

Пример 1: Запись строки в текстовый файл

Для записи строки мы должны использовать функцию fwrite:

 

<html>

 

<head>

<title>Запись в текстовый файл</title>

</head>

<body>

 

<?php

 

// Открыть текстовый файл

$f = fopen("textfile.txt", "w");

 

// Записать строку текста

fwrite($f, "PHP is fun!");

 

// Закрыть текстовый файл

fclose($f);

 

// Открыть файл для чтения и прочитать строку

$f = fopen("textfile.txt", "r");

echo fgets($f);

 

fclose($f);

 

?>

 

</body>

</html>

 

 

Отображение примера

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

Пример 2: Добавление блока текста в текстовый файл

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

 

<html>

<head>

<title>Запись в текстовый файл</title>

</head>

<body>

 

<?php

 

// Открыть текстовый файл

$f = fopen("textfile.txt", "w");

 

// Записать текст

fwrite($f, $_POST["textblock"]);

 

// Закрыть текстовый файл

fclose($f);

 

// Открыть файл для чтения и прочитать строку

$f = fopen("textfile.txt", "r");

 

// Читать текст

echo fgets($f);

fclose($f);

 

?>

 

</body>

 

</html>

 

 

Отображение примера

В следующих уроках мы разберём другой способ хранения данных: базы данных.

Урок 17: Базы данных (БД)

БД это коллекция информации/данных, организованная для упрощения доступа к ним, их администрирования и обновления. БД дают возможность создавать динамические вэб-сайты с большим объёмом информации. Например, все данные членов HTML.net и все пóсты форумов хранятся в БД.

БД обычно состоит из одной или более таблиц. Если вы привыкли работать с крупноформатными таблицами или пользовались БД до этого, то таблицы будут выглядеть привычно для вас - столбцы и ряды:

Существует множество различных БД: MySQL, MS Access, MS SQL Server, Oracle SQL Server и многие другие. В этом учебнике мы используем БД MySQL. MySQL - естественное место для начала использования БД в PHP.

Вам нужен доступ к MySQL, чтобы работать с этим и следующим уроками:

  • Если у вас имеется сайт на вэб-хосте с PHP, MySQL, скорее всего, уже установлен на сервере. См. страницы помощи на вашем хосте.
  • Если вы самостоятельно устанавливали РНР на свой компьютер, а также имеете смелость установить MySQL, можете загрузить его бесплатную версию (MySQL Community Edition) с сайта MySQL.
  • Если вы используете XAMPP (см. Урок 2), MySQL уже установлен и готов к использованию на вашем компьютере. Просто проверьте в Панели Управления, работает ли MySQL:

Далее в этом уроке мы подробно остановимся на том, как подключиться к серверу БД, прежде чем начнём создавать БД, запрашивать и обновлять данные в следующих сессиях.

Соединение с сервером БД

Сначала необходимо получить доступ к серверу, где находится ваша БД MySQL. Это делается функцией mysql_connect с таким синтаксисом:

mysql_connect (сервер, username, password)

 

Проще говоря: сначала вы записываете местоположение БД (сервер), а затем указываете username и password.

Если у вас имеется собственный вэб-сайт, вы должны прочесть о размещении вашего MySQL-сервера на страницах поддержки. Username и password - часто те же, что для FTP-доступа. Иначе свяжитесь с провайдером.

Пример MySQL-соединения на вэб-сайте хоста:

mysql_connect("mysql.myhost.com", "user001", "sesame") or die(mysql_error());

 

Пример MySQL-соединения с XAMPP (установки по умолчанию):

mysql_connect("localhost", "root", "") or die (mysql_error());

 

В этих примерах добавлены or die(mysql_error()), которые, коротко говоря, прерывают работу скрипта и записывают ошибку, если соединение не удалось.

Теперь мы установили соединение с MySQL-сервером и может начать создание БД, запрашивать и вставлять данные. Именно этим мы и займёмся в следующих уроках.

Кстати, не забывайте, что правильно будет закрывать БД всякий раз после окончания запрашивания и обновления данных. Это делается функцией mysql_close.

Урок 18: Создание БД и таблиц

В предыдущем уроке мы узнали, как создать соединение с сервером БД. Следующий шаг - создание БД и таблиц.

Рассмотрим два способа создания БД и таблиц. Первый, как это делается в PHP, второй - с помощью более дружественной утилиты PhpMyAdmin, которая является стандартной на большинстве вэб-хостов и в XAMPP.

Если у вас на хосте есть сайт с поддержкой PHP и MySQL, БД, возможно, уже создана для вас, и вы можете пропустить это раздел урока и начать создавать таблицы. Не забывайте консультироваться со страницами помощи хоста.

Создание БД и таблиц с помощью PHP

Функция mysql_query используется для отправки запроса БД MySQL. Запросы записываются на языке S tructured Q uery L anguage (SQL). SQL - наиболее широко распространённый язык запросов БД - не только для БД MySQL - он очень логичен и прост для изучения. В этом и следующем уроках вы узнаете всё самое важное о SQL-запросах.

При создании БД используется SQL-запрос CREATE DATABASE с таким синтаксисом:

CREATE DATABASE имя БД

 

Легко и просто, не так ли!? Попробуем вставить это в PHP-скрипт:

 

mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());

 

mysql_query("CREATE DATABASE mydatabase") or die(mysql_error());

 

mysql_close();

 

 

Сначала соединяемся с MySQL-сервером. Затем создаём БД "mydatabase". И наконец - закрываем соединение с MySQL-сервером.

Пока неплохо... но всё несколько усложняется, когда мы хотим создать таблицы в PHP. При создании таблиц мы используем SQL-запросCREATE TABLE с таким синтаксисом:

 

CREATE TABLE имя таблицы

(

имя_столбца1 ТИП_ДАННЫХ,

имя_столбца2 ТИП_ДАННЫХ,

имя_столбца3 ТИП_ДАННЫХ,

...

)

 

 

имя_таблицы и имя_столбца это, понятное дело, соответствующие имена. ТИП_ДАННЫХ используется для специфицирования типа данных, вставляемых в столбец. Вот наиболее распространённые типы:

INT

Целые числа

DECIMAL

Десятичные числа

CHAR

Краткий текст до 255 символов длиной

TEXT

Обычный текст до 65,535 символов

LONGTEXT

Длинные куски текста до 4,294,967,295 символов

Date

Даты в формате ГГГГ-MM-ДД

Time

Время в формате ЧЧ:MM:СС

DATETIME

Время и дата в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС

В целом логично и относительно просто. Попробуем вставить это в наш пример:

 

mysql_connect("mysql.myhost.com", "user", "sesame") or die(mysql_error());

mysql_select_db("people") or die(mysql_error());

 

mysql_query("CREATE TABLE MyTable (

id INT AUTO_INCREMENT,

FirstName CHAR,

LastName CHAR,

Phone INT,

BirthDate DATE

PRIMARY KEY(id)

)") Or die(mysql_error());

mysql_close ();

 

 

В этом примере мы начинаем с соединения с MySQL-сервером. Затем используем функцию mysql_select_db для выбора БД "people". Далее создаём таблицу "persons" из 5 столбцов.

Обратите внимание, что для столбца "id" мы используем INT для специфицирования того, что столбец содержит числа, а затем добавляем AUTO_INCREMENT для автоматического инкремента этих чисел и гарантирования тог, что для каждого ряда будет сгенерирован уникальный ID.

В конце мы используем PRIMARY KEY для установки столбца "id" как первичного ключа/primary key. Первичный ключ уникально идентифицирует каждую запись (/ряд) в таблице, что особенно пригодится при последующих обновлениях БД.

Создание БД и таблиц с использованием phpMyAdmin

Бывает полезно иметь возможнос

Поделиться:





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



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