Разработка интернет-приложений. Лекция 6.

Разработка интернет-приложений. Лекция 6.
Разработка интернет-приложений. Лекция 6.

Лекция 6. Работа с сессиями и загрузка файлов на PHP

На страницу урока →

Работа с сессиями на PHP

Сессия — сеанс работы с сайтом PHP. Механизм сессий обеспечивает долговременное сохранение некоторой информации при переходе между страницами сайта.

Кратко

session_start();

$_SESSION['name'] = 'value';

echo $_SESSION['name'];

unset($_SESSION['username']);

session_unset();

session_destroy();

 

Примеры

<?php

  session_start();

  $_SESSION['username'] = "Василий";

  echo 'Привет, ' . $_SESSION['username']; 

?>
<?php

  session_start();

  echo $_SESSION['username'] . ', мы за тобой следим!'; 

?>
<?php 

session_start(); 

if ($_SESSION['username'] == 'Василий') { 

  echo 'Василий, здравствуй, мы уже знакомы!'; 

} else { 

  echo 'Где же Василий?'; 

}; 

?>
<?php

  session_start(); 

  session_unset();
  session_destroy(); 

?>
 

 

Сессии и cookie

Cookie (куки, печенье) — небольшой фрагмент данных, хранимый браузером для определенного сайта и пересылаемый серверу с каждым http-запросом. Куки — основной способ поддержания сессий на PHP.

 

Технология

1. Сервер, желая установить новую сессию, генерирует идентификатор и высылает его в виде нового значения cookie на сторону клиента

2. Клиент (браузер), обращаясь к страницам сайта, каждый раз предъявляет cookie (сообщает идентификатор сессии)

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

 

Особенности cookie

1. Объем — до 4096 байт на каждую cookie. Количество cookie ограничено (зависит от браузера — не менее 300 cookie для браузера и 20 cookie на сайт)

2. Куки имеют срок действия (дата истечения или закрытие браузера)

3. Куки «привязаны» к домену и пути

 

Примеры

Set-Cookie: name=newvalue; expires=date; path=/; domain=.example.org

Set-Cookie: userid=asergeev; expires=Fri, 15 Dec 2017 23:59:59 GMT; path=/; domain=.vspu.ru

Set-Cookie: color=red; path=/books; domain=mif.vspu.ru 

Set-Cookie: userid=asergeev; expires=Fri, 15 Dec 2017 23:59:59 GMT;

 

Работа с cookie в PHP

setcookie("name", $value);

setcookie("name", $value, time()+3600);

setcookie("name", $value,time()+3600, "/folder/", ".vspu.ru");

$_COOKIE['name']

 

Настройка cookie для сессий

session_set_cookie_params(lifetime, path, domain, secure)

session_set_cookie_params(3600);

session_set_cookie_params(3600, '/', 'vspu.ru');

session_set_cookie_params(3600, '/', 'vspu.ru', true);
 

 

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

Веб-сервер для примера: скачать

Примеры:

1. Простой пример

2. Проверка пользователя

 

 

Загрузка файлов на PHP-сайт

Два вопроса:

1. Создание формы

2. Обработка загруженных файлов

 

Создание формы

<form action="index.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" name="submit" value="Загрузить">
</form>
<form action="index.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple>
    <input type="submit" name="submit" value="Загрузить">
</form>

Обработка загруженных файлов

1. Проверить, что загружен новый файл

2. Определить (задать) имя файла и место его хранения

3. Переместить файл в место хранения

 

Информация о файле — в массиве $_FILES

$_FILES['file']['name'] - имя файла до его отправки на сервер

$_FILES['file']['tmp_name'] - имя файла во временном каталоге

$_FILES['file']['size'] - размер файла в байтах

$_FILES['file']['type'] - MIME-тип принятого файла, например: image/gif, text/html

$_FILES['file']['error'] - код ошибки (0 - ошибки нет)

Примеры обработки:

if (isset($_FILES['file']['tmp_name'])) {

    $file = basename($_FILES['file']['name']);
    $path = "folder/" . $file; 

    if (move_uploaded_file($_FILES['file']['tmp_name'], $path)) {

        echo "Файл успешно загружен";

    } else {

        echo "Ошибка загрузки файла";

    }

}
foreach ((array)$_FILES["files"]["tmp_name"] as $key => $tmp_name) {

    if ($_FILES["files"]["error"][$key] === UPLOAD_ERR_OK) {

        $file = $_FILES["files"]["name"][$key];
        $path = "folder/" . $file;

        move_uploaded_file($tmp_name, $path)

    }

}

 

 

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

Примеры:

1. Пример загрузки одного файла

2. Пример загрузки нескольких файлов

 

 

Контрольная работа по предыдущей лекции

Вопрос: Приведите пример работы с базой данных из сценария PHP.

Опубликовано: 09.12.2013 г.