69703

Спеціальні функції

Лекция

Информатика, кибернетика и программирование

Ми вже знайомі з технологією Cookies тому знаємо як зберегти поточний номер питання починаючи з якого тест буде продовжений. А як запам’ятати номери питань масив які згенерували для студента Зберегти масив в Cookies ми не можемо зате можна зберегти рядок.

Украинкский

2014-10-09

35 KB

0 чел.

Тема 23: Спеціальні функції

Хэш-функції

У цьому пункті ми розглянемо дві функції — md5() і crc32().

Функція md5() кодує рядок, використовуючи алгоритм MD5 (Message Digest Algorithm). Якщо бути гранично точним, то функція md5() повертає хэш-код переданого рядка.

Чим же хороший алгоритм MD5? Вірогідність того, що два різні рядки матимуть однаковий хэш-код, прагне до нуля, а це дозволяє ефективно використовувати дану функцію для шифрування паролів. А тим, що зашифроване з його допомогою повідомлення неможливо розшифрувати — для алгоритму MD5 не існує алгоритму дешифровки, як для інших алгоритмів. Для перевірки достовірності пароля потрібно зашифрувати пароль наново і порівняти зашифровані рядки: якщо вони рівні, означає пароль правильний (див. лістинг 9.8).

Лістинг 9.8. Використання хэширования

<?

$а =   "my_password";

$b =   "my_password";

$с =   "password";

if (md5($a)===md5($b)) echo "1: пароль правильний";

if (md5($a)===md5($c)) echo "2: пароль правильний";
?>

Сценарій виведе тільки перше повідомлення, оскільки рядки (значить, і їх хэш-коди) рівні. Взагалі-то використовувати цю функцію потрібно небагато не так:

Пароль не повинен зберігатися в сценарії, тим більше у відкритому
вигляді. Пароль потрібно зберігати в зашифрованому вигляді в базі даних
або в якому-небудь файлі на диску.

Введений  користувачем  пароль повинен  зашифровуватися і
порівнюватися вже із зашифрованим рядком, який прочитаний
з файлу або БД.

Окрім функції md5() ви можете використовувати функцію crypt(), яка реалізує алгоритм DES, але даний алгоритм не так ефективний, як MD5, тому його не можна використовувати для серйозного проекту.

Функція crc32() використовується для обчислення 32-бітової контрольної суми рядка. Дана функція може вам пригодиться в нагоді для реєстрації якого-небудь програмного продукту через Internet, хоча я порекомендував би написати власну функцію для цієї мети, тому що crc32() — стандартна функція, і її може використовувати хто завгодно.

<?

$SN   =   "012103343"; echo   crc32($SN); ?>

Функція Serialize()

Перед нами поставлено практичне завдання: ми розробляємо систему контролю знань (просто кажучи, тест), і нам потрібно передбачити продовження тесту з того місця, де він був перерваний.

Ми вже знайомі з технологією Cookies, тому знаємо, як зберегти поточний номер питання, починаючи з якого тест буде продовжений. А як запам'ятати номери питань (масив), які згенерували для студента? Зберегти масив в Cookies ми не можемо, зате можна зберегти рядок. Функція Serialize() дозволяє перетворити будь-який об'єкт в рядок, нею ми і скористаємося для збереження нашого масиву в Cookies. Звернете увагу: рядок, отриманий в результаті роботи serialize(), має спеціальний формат. Щоб відновити з цього рядка об'єкт назад, використовуйте функцію unserialize (). Повернемося до нашого тесту:

Ми генеруємо список номерів питань, які сериализируем
і поміщається в Cookies.

У програмі працюємо із звичайним масивом, а у разі розриву з'єднання (при повторному запуску) отримуємо масив з Cookies.

Як це реалізується програмно показано в лістингу 9.8.

Лістинг 9.8. Демонстрація використання функції Serialize()

<?

if (!isset($Questions))

{

// Cookies не встановлені - перший запуск

for($i = 0; $i<10; $i + +) $Arr[]=$i;

// Перетворимо масив в рядок

5Serialized_arr = serialize($Arr);

// Встановлюємо Cookies

setcookie("Questions",$Serialized_arr,time()+3600);

unset($Arr); // масив $Arr більше не існує

}

else

{

// Cookies встановлені - "розгортаємо" масив

$Arr = unserialize($Questions);

foreach($Arr as $v) echo "$v ";

}

?>


 

А также другие работы, которые могут Вас заинтересовать

11694. Теория систем и социальные системы бизнеса 246.41 KB
  Теория систем и социальные системы бизнеса В последние годы в мире явно наблюдается возрастание интереса к теоретическим вопросам эффективной организации и ведения бизнеса. Особое внимание уделяется подведению теоретического фундамента под практическую деятельно...
11695. Визначення конфігурації ПК 87.5 KB
  ЛАБОРАТОРНА РОБОТА №9. Тема: Визначення конфігурації ПК. Ціль: Отримати практичні навички програмування визначення конфігурації компютера. Теоретичні відомості У вас є дві можливості визначити модель компютера і отримати деяку інформацію про конфігурац...
11696. Використання розширеної памятіта можливостей XMS драйверів 106.5 KB
  ЛАБОРАТОРНА РОБОТА №12. Тема: Використання розширеної памятіта можливостей XMS драйверів. Ціль: Отримати практичні навички звернення до драйвера розширеної памяті і вивчити її основні функції. Теоретичні ві...
11697. Ознайомлення з функціями драйвера EMS 119.5 KB
  ЛАБОРАТОРНА РОБОТА №13. Тема: Ознайомлення з функціями драйвера EMS. Ціль: Вивчити здатність роботи з розширеною памяттю. Теоретичні відомості. На відміну від розширеної памяті додаткова память за допомогою спеціальної апаратури і програмного забезпечення в
11698. Многократные равноточные измерения. Точечная оценка результатов наблюдения 470.5 KB
  Многократные равноточные измерения. Точечная оценка результатов наблюдения. 1. Цель работы 1.1. Выбор средства измерения. 1.2. Освоение метода непосредственной оценки при проведении многократных равноточных измерений. 1.3. Освоение метода ...
11699. Технические измерения линейных размеров. Многократные равноточные (ограниченной выборки) и однократные прямые измерения 186.5 KB
  Тема: Технические измерения линейных размеров. Многократные равноточные ограниченной выборки и однократные прямые измерения 1. Цель работы 1.1. Изучить назначение и устройство штангенрейсмаса штангенглубомера и индикаторного нутромера а также правила их исп
11700. Отклонения формы и расположения поверхностей. Измерение отклонений круглости, прямолинейности цилиндрической поверхности (изогнутости оси), радиального и торцевого биений 247 KB
  Тема: Отклонения формы и расположения поверхностей. Измерение отклонений круглости прямолинейности цилиндрической поверхности изогнутости оси радиального и торцевого биений 1. Цель работы 1.1. Изучить назначение и устройство индикатора часового типа модели...
11701. Средства измерения с непосредственной оценкой. линейные и угловые измерения, работа со штангенциркулем, микрометром, угломером 332 KB
  Лабораторная работа № 1 Средства измерения с непосредственной оценкой. линейные и угловые измерения работа со штангенциркулем микрометром угломером 1. Цель работы Освоить метод непосредственной оценки с отсчётом по шкале и нониусу при помощи линейных ср...
11702. Меры, ознакомление и работа с мерами. Меры твердости образцовые. Меры длинны концевые 99.5 KB
  Лабораторная работа № 2 Меры ознакомление и работа с мерами. Меры твердости образцовые. Меры длинны концевые 1. ЦЕЛЬ РАБОТЫ: 1. Освоить понятие меры; 2. Ознакомиться с разновидностями мер; 3. Ознакомиться с образцовыми мерами твёрдости служащие для поверки п