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 ";

}

?>


 

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

80467. Кількість елементів множини. Число 0 81.5 KB
  Мета: виробляти в учнів навички лічби; вчити порівнювати предметні множини за кількістю елементів; визначати спільні ознаки об’єктів множини, розпізнавати елементи множини; Формувати поняття числа; ознайомити учнів з числом і цифрою 0. Розвивати уяву, математичне та логічне мислення...
80468. «Вісімка запрошує друзів». (Число і цифра 8. Склад числа 8.) 187.5 KB
  Мета: формування вмінь, навичок та норм діяльності, застосування знань у ситуаціях, наближених до життя; розвиток уміння самооцінювати набуті знання, логічно мислити та висловлювати свої думки; виховувати дружні стосунки та повагу до однокласників.
80469. Склад числа 7. Дні тижня 149 KB
  Задачі уроку: ознайомити учнів зі складом числа 7, розглянути всі варіанти складу числа 7; вправляти в написанні цифр; вчити складати, розв’язувати і записувати приклади на додавання в межах 7; закріплювати знання назв днів тижня; вдосконалювати обчислювальні навички...
80470. Складання таблиць додавання й віднімання числа 6. Робота з геометричним матеріалом 382.5 KB
  Продовжити формування навичок швидкого додавання й віднімання; скласти таблицю додавання й віднімання числа 6; закріпити розширити математичні знання учнів; вправляти в побудові відрізків; розвивати логічне мислення увагу кмітливість; виховувати інтерес до математики.
80471. Додавання і віднімання в межах 100. Складання та розв’язування задач за коротким записом. Одиниця вимірювання місткості – 1 літр 186.5 KB
  Мета: Вдосконалювати обчислювальні навички учнів, закріплювати вміння складати і розв?язувати задачі за коротким записом, повторити одиницю вимірювання місткості – 1 літр, показати практичну значимість одиниці місткості, розвивати логічне мислення, пам?ять, математичну мову, виховувати пізнавальний інтерес.
80473. Додавання двоцифрових чисел виду 24+36 38 KB
  Розглянути різні прийомидодавання двоцифрових чисел даного виду, розвивати вміння розв’язувати задачі, вдосконалювати обчислювальні навички. Мультимедійна презентація, картки-підказки для самостійної роботи
80474. Властивості множення 132.5 KB
  Вивести і запровадити сполучну властивість множення, вчити її використовувати для раціоналізації обчислення. Повторити формулу знаходження об’єму прямокутного паралелепіпеда, знаходити об’єм прямокутного паралелепіпеда. Закріплювати знання таблиці множення, розв’язувати задачі і рівняння.
80475. Квадрат. Застосування різних прийомів знаходження суми двоцифрових чисел 128 KB
  Мета: закріпити поняття «геометричні фігури», формувати поняття« квадрат», вчити знаходити різницю між квадратом та прямокутником, вдосконалювати навички знаходження периметра фігури, розв’язування складених задач, закріплювати вміння обчислювати різними прийомами суму двоцифрових чисел...