Файл: Интернет. Интернет протокол IP.docx

ВУЗ: Не указан

Категория: Лекция

Дисциплина: Сети связи

Добавлен: 13.02.2019

Просмотров: 893

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Да если кто не знает , то __DIR__ - это полный путь к текущему каталогу где выполняется данный код.

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

$text = file_get_contents(__DIR__.'/text.txt');

echo $text;

Как видите мы благополучно считали данные с ранее созданного файла. file_get_contents(Полный путь к файлу)

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

$text = file_get_contents('https://twitter.com/');

echo $text;

Как видите у нас подгрузились элементы данного сайта, если же мы хотим посмотреть его исходный код , то достаточно заэкранировать специальные символы:

echo htmlspecialchars($text);

Такой подход бывает используют при парсинге сайтов.

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

unlink(__DIR__.'/text.txt');

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

Это можно исправить написав условие для проверки на существование данного файла.

if(file_exists(__DIR__ . '/text.txt')) {

unlink(__DIR__ . '/text.txt');

}

здесь с помощью функции file_exists(путь к файлу) мы проверяем существует ли файл с таким путем. Если да , то функция возвращает нам true и условие if выполняется удаляя данный файл , а если же нет ,возвращается false и данное условие уже не выполняется, так как файла с таким путем уже нет.

Создание папок осуществляется с помощью команды mkdir(Полный путь)

mkdir(__DIR__."/css");

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

chdir(__DIR__."/css");

file_put_contents('style2.css','');

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

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

if(!is_dir(__DIR__.'/css')) {

mkdir(__DIR__ . '/css');

}

Функция is_dir(путь) проверяет существует ли директория с заданным путем . В нашем условии говорится если директория не существует , то мы создаем ее.

За удаление директорий в php отвечает функция rmdir(путь):

if(is_dir(__DIR__.'/css')) {

rmdir(__DIR__ . '/css');

}

Функция rmdir() удаляет папку причем папка на момент удаления должна быть абсолютно пуста иначе возникнет ошибка.

Чтобы проверить содержимое папки мы можем воспользоваться функцией glob()

print_r(glob(__DIR__.'/css/*', 0));

Здесь функция glob() возвращает массив значений полных путей файлов и папок которые содержаться в директории css. Следовательно когда количество элементов в массиве станет равно нулю только тогда мы сможем удалить данную директорию.


Пример: Получить список файлов директории в виде массива

То же самое делает функция scandir(), разница в том что у scandir() в массиве будут «.» и «..» и есть возможность сортировки.

function list_files($path)

{

if ($path[mb_strlen($path) - 1] != '/') {

$path .= '/';

}



$files = array();

$dh = opendir($path);

while (false !== ($file = readdir($dh))) {

if ($file != '.' && $file != '..' && !is_dir($path.$file) && $file[0] != '.') {

$files[] = $file;

}

}



closedir($dh);

return $files;

}



print_r(list_files(__DIR__));

Array

(

[0] => favicon.ico

[1] => index.php

[2] => image.jpg

[3] => robots.txt

)

16) SQL. SQL-запросы в PHP

SQL (англ. structured query language — «язык структурированных запросов») — декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных, управляемой соответствующей системой управления базами данных.

Функция, без которой в языке PHP выполнение SQL-запросов было бы просто невозможным:

query(запрос)

Данная функция посылает запрос к базе данных и возвращает в случае успешного обращения идентификатор ресурса.

$query = "SELECT * FROM `my_sql_table`";

$res = mysql_query($query);

SELECT

Оператор языка SQL SELECT предназначен для запросов на выборку данных из базы данных. Названия таблиц и столбцов чувствительны к регистру. Для выбора всех столбцов таблицы после слова SELECT нужно ставить звёздочку (*).

SELECT * FROM ИМЯ_ТАБЛИЦЫ

SELECT * FROM STAFF

Для выбора определённых столбцов таблицы нам потребуется вместо звёздочки перечислить через запятую названия всех столбцов, которые требуется выбрать:

SELECT ВЫБИРАЕМЫЕ_СТОЛБЦЫ FROM ИМЯ_ТАБЛИЦЫ

SELECT DEPT, NAME, JOB FROM STAFF

DISTINCT

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

WHERE

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

SELECT ИМЯ_СТОЛБЦА FROM ИМЯ_ТАБЛИЦЫ WHERE УСЛОВИЕ

SELECT DEPT, NAME, JOB

FROM STAFF WHERE DEPT=38

Наиболее простые условия задаются при помощи операторов сравнения и равенства (<, <=, >, >=, =, <> (не равно)).

Условий может быть несколько, тогда они перечисляются с использованием ключевого слова AND (так же есть оператор OR):

SELECT DEPT, NAME, JOB

FROM STAFF WHERE JOB='Clerk' AND DEPT=38


OR

Пусть требуется выбрать из таблицы Staff имена, должности и число отработанных лет сотрудников, работающих в отделах с номерами 20 или 84:

SELECT NAME, JOB, YEARS

FROM STAFF

WHERE DEPT=20 OR DEPT=84

BETWEEN

Выберем из той же таблицы имена, должности и число отработанных лет сотрудников, зарплата которых между 15000 и 17000 включительно:

SELECT NAME, JOB, YEARS

FROM STAFF

WHERE SALARY BETWEEN 15000 AND 17000

LIKE

Предикат LIKE используется для выборки тех строк, в значениях которых встречаются символы, указанные после предиката между апострофами (').

Выберем из таблицы имена, должности и число отработанных лет сотрудников, имена которых начинаются с буквы S и содержат любые другие буквы в любом количестве:


SELECT NAME, JOB, YEARS

FROM STAFF

WHERE NAME LIKE 'S%'

S%’ – начинается на S. ‘%S’ – заканчивается на S. ‘%S%’ – содержится где-то между.

Пример:

<?php

$dbh = mysql_connect($hostname, $username, $pswd) or die("Не могу соединиться с MySQL.");

mysql_select_db($database) or die("Не могу подключиться к базе.");

$query = "SELECT * FROM `my_sql_table`";

$res = mysql_query($query);

while($row = mysql_fetch_array($res))

{

echo "Номер: ".$row['id']."<br>\n";

echo "Имя: ".$row['firstname']."<br>\n";

echo "Фамилия: ".$row['surname']."<br><hr>\n";

}

?>

17) SQL. Подключение к базе данных MySQL

<?php

$conn = new mysqli("namehost", "username", "password", "namebd");

if ($conn->connect_error) {

die("Ошибка: не удается подключиться: " . $conn->connect_error);

}

$result = $conn->query("SELECT name FROM employee");

echo "Количество строк: $result->num_rows";

$result->close();

$conn->close();

?>

1)MySQLi означает MySQL Improved.

new mysqli - инициируют новое соединение, используя расширение Mysqli. Эта функция будет принимать четыре аргумента:

  1. Имя хоста, где база данных MySQL работает

  2. Имя пользователя для подключения MySQL

  3. Пароль для пользователя mysql

  4. База данных MySQL для подключения.

query - Функция запроса – Используйте ее, чтобы указать ваш запрос MySQL. В этом примере, мы выбираем столбец имени из базы данных employee.

num_rows – возвращает количество строк

2)Подключение на PHP с использованием функций mysql_ (устар)

mysql_fetch_array – формирует и выдает массив по выборке из таблицы.

18) SQL. Сортировка записей. Объединение таблиц (JOIN)

ORDER BY

Часто требуется отсортировать строки по порядку номеров, алфавиту и другим признакам. Для этого служит ключевое словосочетание ORDER BY. Такие запросы имеют следующий синтаксис:

SELECT ИМЯ_СТОЛБЦА FROM ИМЯ_ТАБЛИЦЫ WHERE УСЛОВИЕ

ORDER BY СТОЛБЕЦ, ПО КОТОРОМУ СОРТИРУЮТСЯ РЕЗУЛЬТАТЫ

Слово ASC указывает, что порядок сортировки - возрастающий. Это слово не обязательно, так как возрастающий порядок сортировки применяется по умолчанию.

Слово DESC указывает, что порядок сортировки – убывающий:

SELECT NAME, JOB, YEARS

FROM STAFF WHERE DEPT=84

ORDER BY YEARS DESC

JOIN

Оператор языка SQL JOIN предназначен для соединения двух или более таблиц базы данных по совпадающему условию.

Запрос с оператором INNER JOIN предназначен для соединения таблиц и вывода результирующей таблицы, в которой данные полностью пересекаются по условию, указанному после ON. То же самое делает и просто JOIN. Таким образом, слово INNER - не обязательное.

Пример:

Требуется соединить данные этих двух таблиц так, чтобы в результирующей таблице были поля Part (Часть), Cat (Категория) и Price (Цена подачи объявления) и чтобы данные полностью пересекались по условию. Условие - совпадение идентификатора категории в таблице Categories и ссылки на категорию в таблице Parts. Для этого пишем следующий запрос:

SELECT PARTS.Part, CATEGORIES.Cat_ID AS Cat, CATEGORIES.Price

FROM PARTS INNER JOIN CATEGORIES

ON PARTS.Cat = CATEGORIES.Cat_ID

LEFT OUTER JOIN (левое внешнее соединение)

Запрос с оператором LEFT OUTER JOIN предназначен для соединения таблиц и вывода результирующей таблицы, в которой данные полностью пересекаются по условию, указанному после ON, и дополняются записями из первой по порядку (левой) таблицы, даже если они не соответствуют условию.


SELECT PARTS.Part, CATEGORIES.Cat_ID AS Cat, CATEGORIES.Price

FROM PARTS LEFT OUTER JOIN CATEGORIES

ON PARTS.Cat = CATEGORIES.Cat_ID

RIGHT OUTER JOIN (правое внешнее соединение)

Запрос с оператором RIGHT OUTER JOIN предназначен для соединения таблиц и вывода результирующей таблицы, в которой данные полностью пересекаются по условию, указанному после ON, и дополняются записями из второй по порядку (правой) таблицы, даже если они не соответствуют условию.

SELECT PARTS.Part, CATEGORIES.Cat_ID AS Cat, CATEGORIES.Price

FROM PARTS RIGHT OUTER JOIN CATEGORIES

ON PARTS.Cat = CATEGORIES.Cat_ID

FULL OUTER JOIN (полное внешнее соединение)

Запрос с оператором FULL OUTER JOIN предназначен для соединения таблиц и вывода результирующей таблицы, в которой данные полностью пересекаются по условию, указанному после ON, и дополняются записями из первой (левой) и второй (правой) таблиц, даже если они не соответствуют условию.

SELECT PARTS.Part, CATEGORIES.Cat_ID AS Cat, CATEGORIES.Price

FROM PARTS FULL OUTER JOIN CATEGORIES

ON PARTS.Cat = CATEGORIES.Cat_ID

Пример:

<?php

$dbh = mysql_connect($hostname, $username, $pswd) or die("Не могу соединиться с MySQL.");

mysql_select_db($database) or die("Не могу подключиться к базе.");

$query = " SELECT PARTS.Part, CATEGORIES.Cat_ID AS Cat, CATEGORIES.Price

FROM PARTS INNER JOIN CATEGORIES

ON PARTS.Cat = CATEGORIES.Cat_ID ";

$res = mysql_query($query);



19) Механизм Cookie

Ку́ки (англ. cookie, буквально — печенье) — небольшой фрагмент данных, отправленный веб-сервером и хранимый на компьютере пользователя. Веб-клиент (обычно веб-браузер) всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса. Применяется для сохранения данных на стороне пользователя, на практике обычно используется для:

  • аутентификации пользователя;

  • хранения персональных предпочтений и настроек пользователя;

  • отслеживания состояния сеанса доступа пользователя;

  • ведения статистики о пользователях.

Одни значения cookie могут храниться только в течение одной сессии, они удаляются после закрытия браузера. Другие, установленные на некоторый период времени, записываются в файл. Обычно этот файл называется 'cookies.txt' и лежит в рабочей директории установленного на компьютер браузера.

Для установки Cookies используется функция SetCookie(). Для этой функции можно указать шесть параметров, первый из которых является обязательным:

  1. name - задает имя (строк), закрепленное за Cookie;

  2. value - определяет значение переменной (строка);

  3. expire - время "жизни" переменной (целое число). Если данный параметр не указать, то Cookie будут "жить" до конца сессии, то есть до закрытия браузера. Если время указано, то, когда оно наступит, Cookie самоуничтожится.

  4. path - путь к Cookie (строка);

  5. domain - домен (строка). В качестве значения устанавливается имя хоста, с которого Cookie был установлен;

  6. secure - передача Cookie через защищенное HTTPS-соединение.

Обычно используются только три первые параметра.

Получить доступ к Cookies и их значениям достаточно просто. Они хранятся в суперглобальных массивах и $_COOKIE и $HTTP_COOKIE_VARS.


Доступ к значениям осуществляется по имени установленных Cookies, например:

echo $_COOKIE['my_cookie'];

// Выводит значения установленной Cookie 'My_Cookie'

20) Механизм Сессий

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

Существует несколько способов передачи идентификатора сессии:

  • С помощью cookies.

Cookies были созданы специально как метод однозначной идентификации клиентов и представляют собой расширение протокола HTTP. В этом случае идентификатор сессии сохраняется во временном файле на компьютере клиента, пославшего запрос. Метод, несомненно, хорош, но многие пользователи отключают поддержку cookies на своем компьютере из-за проблем с безопасностью.

  • С помощью параметров адресной строки(сессии).

В этом случае идентификатор сессии автоматически встраивается во все запросы (URL), передаваемые серверу, и хранится на стороне сервера.

Например: адрес http://green.nsu.ru/test.php превращается в адрес http://green.nsu.ru/test.php?PHPSESSID=ac4f4a45bdc893434c95dcaffb1c1811

Для инициализации новой или возобновления ранее созданной необходимо вызвать PHP-функцию session_start(). Данную функцию необходимо вызывать до вывода контента в коде. Сессионные параметры находятся в глобальном массиве $_SESSION. Рассмотрим пример:

При первом выполнении скрипта создастся новая сессия функцией session_start(). Условие выполнится, так как сессионной переменной test не существует и при этом будет создана данная сессионная переменная. При последующих выполнениях функция session_start() будет возобновлять ранее созданную сессию, условие выполняться не будет, а будет лишь выводиться значение переменной test.

По умолчанию сессия уничтожается при закрытии клиентом браузера. Но можно задать и конкретное время жизни сессии в php.ini (указывается время в секундах):

session.cookie_lifetime = 0

В скрипте сессию можно принудительно уничтожить функцией session_destroy().