Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP_Барчук_довідник.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
1.14 Mб
Скачать

10.4 Копіювання файлів

PHP містить функцію copy() для копіювання файлів. Ця функція визначається нижче:

copy (ісходний_файл, новий_файл) - копіює вміст вихідного файлу, визначеного першим параметром, в новий файл, визначений другим параметром функції. Функція повертає значення true або false. Наступний приклад показує, як скопіювати вміст одного файлу в інший файл: filecopy.php <? $orig_filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt"; $new_filename = "C:/Documents and Settings/Administrator/MyFiles

/myNewfile.txt"; $status = @copy($orig_filename, $new_filename) or die ("Неможливо скопіювати файл"); echo "Вміст файлу успішно скопійовано!"; ?>

Перший крок полягає у створенні змінної для зберігання повного шляху доступу до вихідного файлу, вміст якого буде скопійовано: $orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; Потім створюється друга змінна для зберігання повного шляху доступу до нового файлу, який буде створено: $new_filename = "C:/Documents and Settings/Administrators/MyFiles/myNewfile.txt"; Копіювання виконує функція copy (), приймаючи два параметри, шлях доступу до вихідного файлу - $orig_filename, і шлях доступу до нового - $ new_filename. Функція copy () повертає значення true, якщо копіювання завершується успішно, інакше повертається значення false. Значення, що повертається зберігається у змінній $status.

10.5 Видалення файлу

PHP містить функцію unlink() для видалення файлів. Функцію unlink() треба використовувати з обережністю. Після видалення файлу його неможливо відновити. Ця функція визначається нижче.

unlink (ім'я_файлу) - видаляє файл, визначений параметром. Функція повертає значення true або false.

Наступний приклад показує, як видалити файл за допомогою функції unlink(): filedelete.php

<? $filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt"; $status = unlink($filename) or exit ("Неможливо видалити файл"); echo "файл успішно знищений"; ?>

10.6 Переіменування файлу

PHP містить функцію renam () для перейменування файлів. Ця функція визначена нижче: rename ($ orig_filename, $ new_filename) - перейменує файл, визначений першим параметром, в ім'я, певне другим параметром. Функція повертає значення true або false. Наступний приклад показує, як перейменувати файл за допомогою функції rename (): filerename.php

<? $orig_filename = "C:/Documents and Settings/Administrator/MyFiles/myfile.txt"; $new_filename = "C:/Documents and Settings/Administrator/MyFiles/newfile.txt"; $status = rename($orig_filename, $ new_filename) or exit ("Неможливо перейменувати файл"); echo "файл успішно перейменовано"; ?>

11. Робота із сесіями і куксі

11.1 Сесії

Змінна сеансу є спеціальним типом змінної, значення якої зберігається при переході між послідовними сторінками Web. C допомогою змінних сеансу специфічні дані користувача можна зберігати при переході зі сторінки на сторінку, надаючи йому індивідуалізований контент при взаємодії користувача з додатком Web. Змінні сеансу існують зазвичай, поки не виконується одна з наступних подій:

1. користувач закриває вікно браузера; 2. завершення заданого на сервері максимального інтервалу часу сеансу; 3. використання функцій PHP, таких, як session_destroy(), щоб звільнити всі існуючі в даний момент змінні сеансу.

Проблема, яку повинні вирішити змінні сеансу, полягає в тому, що протокол 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.

Наступний блок коду демонструє, як ініціалізується мінлива сеансу.

<?

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 містить другий сценарій, який використовується для знищення змінної сеансу, викликаючи функцію session_destroy (). Сценарій виконується після того, як користувач клацає на кнопці "Log Out". Додатки Web, які використовують дані сеансу, можуть бути доступні одночасно безлічі користувачів. Щоб кожен користувач мав свій власний сеанс, з кожним сеансом необхідно пов'язати унікальне значення id. У PHP це унікальне значення сеансу id можна витягти за допомогою функції session_id (). Унікальне значення сеансу session_id () підтримується для кожного користувача і зберігається в підкаталозі PHP/sessiondata, розташованому на сервері Web.

Так як значення session_id () є унікальним для кожного користувача, його можна застосовувати для ідентифікації користувачів, не створюючи при цьому індивідуальних імен користувачів і паролів. Функція session_id () визначена нижче: session_id () - використовується для отримання значення id поточного сеансу.

11.2 Кукі

Файл cookie є повідомленням від браузера Web-сервера. Браузер зберігає повідомлення в текстовому файлі. Це повідомлення надсилається потім назад на сервер кожен раз, коли браузер запитує сторінку з сервера.

Основне призначення cookies полягає в ідентифікації користувачів і можливу підготовку спеціально налаштованої для них сторінки Web. При відвідуванні сайту Web, використовує cookies, на сайті може бути запропоновано заповнити форму, щоб надати таку інформацію, як своє ім'я та можливі інтереси. Ця інформація упаковується в cookie і надсилається браузеру Web, який зберігає її для подальшого використання. Коли ви наступного разу відвідуєте той же самий сайт Web, браузер пошле cookie сервера Web. Сервер може використовувати цю інформацію, щоб створити індивідуалізовані сторінки Web. Тому, наприклад, заміст звичайної сторінки можна побачити привітальну сторінку зі своїм ім'ям.

У PHP файли cookies створюють за допомогою функції setcookie (). Всі дані cookie зберігаються в глобальній змінній PHP $_COOKIE і доступні для наступних сторінок.

setcookie (name, value, expiration, path, domain, security) - визначає файл cookie, який надсилається разом з іншими заголовками HTTP. Як і інші заголовки, файли cookie повинні надсилатися до будь-якого висновку роботи сценарію (це обмеження протоколу). Тому потрібно, щоб звернення до функції було поміщено до будь-якого висновку, включаючи теги і будь-які символи роздільники. Якщо висновок відбувається до звернення до цієї функції, то setcookie () не виконається і поверне FALSE.

Якщо setcookie () виконується успішно, то повертається TRUE. Це не вказує на те, що користувач прийняв cookie.

Параметри setcookie () пояснюються в наступній таблиці.

Параметр

Описання

name

Ім'я cookie. Цей ідентифікатор зберігається в глобальній змінній $ _COOKIE і доступний в наступних сценаріях

value

Значення cookie. Значення, пов'язане з ідентифікатором cookie. Зберігається на комп'ютері користувача, тому не повинно містити секретної інформації

expiration

Час, коли закінчується значення cookie або стає більш недоступним. Цей час можна задати за допомогою функції time (). Файли cookie, без заданого значення часу закінчення, завершують своє існування при закритті браузера

path

Вказує шляхи доступу на сервері, для яких cookie дійсний або доступний. Пряма слеш "/"говорить, що cookie доступний у всіх папках

domain

Домен, в якому доступний cookie. Якщо домен не визначено, за замовчуванням використовується хост, на якому створено cookie. Значення domain повинні містити в рядку як мінімум дві крапки ".", щоб бути допустимими

security

Вказує, чи буде cookie передаватися через HTTPS. Значення 1 означає, що cookie передається через захищене з'єднання. Значення 0 означає стандартну передачу HTTP

Наступний приклад демонструє, як cookie використовується для зберігання імені користувача відвідувача. Спочатку потрібно ввести ім'я користувача, щоб отримати доступ до обмеженого сайту. Коли ім'я користувача буде створено, cookie, що містить його, зберігається на комп'ютері користувача. Доступ в майбутньому можливий при добуванні cookie з комп'ютера користувача.

setcookie.php

<?

if ($_REQUEST[auth] == "no"){

$msg = " Ви не є користувачем. Увійдіть.";

}

// Якщо користувач клацає на кнопці Login, створюється cookie,

// містить його ім'я користувача і IP-адреса

if (!isset($_POST[submit]) | empty($_POST[submit]))){

$cookie_name = "user";

$cookie_value = $_POST[uname];

$cookie_expire = time() + 14400;

setcookie($cookie_name,$cookie_value,$cookie_expire,"/");

$formDisplay = "no";

}

?>

Index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHMTL 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Страница Web </title>

<style type="text/css">

body {font:10pt arial;color:white}

div#form {background-color:gray;border:solid 1px black;padding:10px}

input {border:solid 2px black}

</style>

<?php

if($formDisplay == "no"){

?>

<meta http-equiv='refresh' content='0;url=siteaccess.php?auth=yes'/>

<?

}

?>

</head>

<body>

<div id="form">

<h4 style="color:red">New User? Create User Name</h4>

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

<p>User Name:

<br/>

<input type="text" name="uname" size="7"/>

</p>

<input type="submit" value="Login" name="submit"/>

</form>

<h4 style="color:red">Existing User?

<a style="color:white" href="siteaccess.php?auth=yes">Enter Site</a></h4>

</div>

<br/>

<br/>

<? echo "<span style='color:red'>" . $msg . "</span>";?>

</body>

</html>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]