PHP. Изучение языков и web-технологий PHP. Изучение языков и web-технологий

Конспект изучения языков и web-технологий : PHP

 
Мистический роман
БЛИЗКАЯ ДАЛЬ
Татьяны Катушонок

Купить в магазинах:
Близкая даль
Близкая даль
Близкая даль
Близкая даль
Близкая дальБлизкая даль
Озарение души
Сборник стихов Татьяны Катушонок
Осознание красоты спасет мир
Web technologies and programming languages
Web технологии и языки
XML - XSLT
Изучаем XML
Преобразования
HTML
Изучаем HTML
Теги
Javascript и AJAX
Три кита
Листенеры
Каталог
Список литературы
Основы языка
Publishing MySQL Data on the Web
Структурное программирование
Простая CMS
Особенности коннекта к Oracle
Cookies, Sessions, Access Control, Binaty Data

Cookies, Sessions, Access Control, Binaty Data
четверг
Просто рабочий конспект
Куки - набор пар имя-значение, хранящиеся на клиенте в привязке к конкретному сайту.

 
setcookie(name[, value[, expiryTime[, path[, domain[, secure[,httpOnly]]]]]])
 

Должна использоваться до отправки актуального контента (аналогично header()) !
Разные браузеры могут вводить ограничения на количество куков.

Чтобы обойти возможные ограничения браузеров, используются сессии.

Если куки хранятся на клиенте, то сессии - на web-сервере.
В качестве куки в этом случае хранится тоько id сессии юзера.
Разрешение на сессии прописывается в файле php.ini.
До передачи контента вызывается функция:

 
session_start();
$_SESSION['password'] = 'mypassword';
unset($_SESSION['password']);
$_SESSION = array();
session_destroy();
 

Браузер передаёт id сессии каждый раз при  запросе страницы.

Для работы с файлами используются функции:

$html = file_get_contents($srcurl);
$result=file_put_contents($tempfilename, $html);
file_exists($tempfilename);
unlink($tempfilename);
copy($tempfilename, $targetfilename);

Что интересно, если в функции file_get_contents($srcurl) в значении $srcurl стоит url, например, "http://prostophp.blogspot.com/2010/10/cookies-sessions-and-access-control.html", то результатом будет не содержание файла, а результат обработки файла браузером, т.е.html - контент!

Всё, что нужно для  upload - выгрузки файла с клиента на сервер:
 
<form action="index.php" method="post" enctype="multipart/form-data">
   <div><label id="my_files">Select file to upload:
               <input type="file" id="upload" name="upload"/></label>
   </div>
   <div><input type="hidden" name="action" value="upload"/>
            <input type="submit" value="Submit"/>
   </div>
</form>
 

PHP - скрипт index.php обрабатывает просабмиченную форму.
Информация о файле хранится в глобальном массиве $_FILES['my_files'].
$_FILES[ ]['tmp_name'] - имя загруженного  на web-сервер файла во временный каталог (параметр upload_tmp_dir в php.ini)
$_FILES[ ]['name'] - имя исходного файла на клиенте до сабмита
$_FILES[ ]['size'] - размер файла в байтах
$_FILES[ ]['type'] - MIME type файла (text/plain, image/gif,image/jpeg,image/png,..)

Ограничение макс. размера файла - через параметр upload_max_filesize в php.ini.
Проверять через параметр $_FILES[ ]['size'] нет смысла, т.к. файл уже загружен на сервер.

Создание уникального имени файла, например:
 
$filename = 'C:/uploads/' . time() . $_SERVER['REMOTE_ADDR'] . $ext;
 

Безопасное копирование файла:
 
if (!is_uploaded_file($_FILES['upload']['tmp_name']) or
  !copy($_FILES['upload']['tmp_name'], $filename))
{ обработка ошибки ...}
 

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

Просмотр загруженных файлов.

Размер файла передаётся в заголовке:
header('Content-length: ' . strlen($filedata));


Тип файла:
 
header("Content-type: $mimetype");
 

Имя файла:
 
header("Content-disposition: inline; filename=$filename");
 

Извлекаем файл из базы:

 
$sql = "SELECT filename, mimetype, filedata FROM filestore WHERE id = '$id'";
...
$file = mysqli_fetch_array($result);
$filename = $file['filename'];
$mimetype = $file['mimetype'];
$filedata = $file['filedata'];
$disposition = 'inline';    // просмотр на месте
if ($_GET['action'] == 'download')
{
$mimetype = 'application/x-download';
$disposition = 'attachment';
}

header("Content-type: $mimetype");
header("Content-disposition: $disposition; filename=$filename");
header('Content-length: ' . strlen($filedata));
echo $filedata;

Ярлыки: , , ,

Подпишись на новости PHP по e-mail
posted by Sergey @ 02:50  
0 Comments:

Отправить комментарий

<< Home
 
Близкая даль
Подпишись на новости Javascript и AJAX письмом:

Напишите ваш e-mail :

Delivered by FeedBurner

Предыдущий пост
Архив
Линки
Статистика

Subscribe in a reader

Powered by FeedBurner

BLOGGER

© PHP. Изучение языков и web-технологий