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

}

?>


 

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

50089. ИЗУЧЕНИЕ ПРЕЛОМЛЕНИЯ СВЕТА ПРИЗМОЙ. ИЗУЧЕНИЕ ДИСПЕРСИИ СВЕТА 151 KB
  ИЗУЧЕНИЕ ПРЕЛОМЛЕНИЯ СВЕТА ПРИЗМОЙ Изучение дисперсии света. Абсолютным показателем преломления некоторого вещества в электромагнитной теории называется число показывающее во сколько раз скорость волны в вакууме больше скорости волны в веществе: n = c v. Абсолютный показатель преломления связан с диэлектрической и магнитной проницаемостями среды следующим образом: n =. Дисперсией электромагнитного излучения называют явление обусловленное зависимостью показателя преломления вещества от длины волны частоты n = fλ0 где λ0 – длина...
50090. Интегральные устройства радиоэлектроники 15.38 MB
  Курсовое проектирование по дисциплине Интегральные устройства радиоэлектроники обобщает знания, полученные студентами в процессе изучения дисциплины, а также умения и навыки, приобретенные при прохождении практики на производстве, и ставит своей целью подготовить студентов к самостоятельному решению сложных проектно-конструкторских задач.
50091. ИЗУЧЕНИЕ СПЕКТРА АТОМА ВОДОРОДА 211.5 KB
  Совокупность электронов составляет электронную оболочку атома. Ядро в котором сосредоточена почти вся масса атома занимает ничтожно малую часть всего его объема. При этом размер самого атома который определяется размерами его электронной оболочки около 108 см.
50093. Исследование переходных процессов в электрических цепях с источником постоянного напряжения 517 KB
  Построение графиков напряжения и токов при переходных процессах. Построение графиков по расчётным данным:...
50094. Техніка ударів по мячу ногою 130 KB
  Техніка ударів по м’ячу ногою. У футболі удари по м’ячу виконуються ногою і головою. Удари по м’ячу головою роблять серединою та бічними частинами голови. Частини тіла якими футболіст виконує прийоми техніки гри удари зупинки ведення тощо Удар по м’ячу внутрішньою частиною стопи Цей прийом застосовується під час ударівпередач на невеликі відстані зокрема по воротах.
50095. Определение удельного сопротивления, контактного сопротивления, и удельной теплопроводности металлов низкоомных материалов с помощью измерительного усилителя 176 KB
  Несмотря на низкое удельное сопротивление при большой длине металлические проводники могут иметь заметное сопротивление что приводит к потерям электроэнергии при её передаче и влияет на работу потребителей. Например изза большого числа витков активное омическое сопротивление катушки индуктивности может оказаться соизмеримым с её реактивным сопротивлением. Для металлических образцов реальных размеров учитывая что удельное сопротивление в среднем варьируется от 107 до 105 Омм величины сопротивлений оказываются также малы. Ещё одной...
50097. Массивы. Линейные массивы. Двухмерные массивы – матрицы. Многомерные массивы 42 KB
  Элементами массива могут быть данные любого но только одного типа включая структурированные. Тип элементов массива называется базовым число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индекс массива по смыслу тождествен понятию индекса элемента вектора.