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

}

?>


 

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

75426. Регулятор і система регулювання 7.58 MB
  Регулятори: перервні аналогові цифрові. Регулятори: первинні аналогові цифрові Регулятори неперервної дії аналогові змінюють значення регульовальної координати об’єкту неперервним чином тобто ця координата може приймати будьякі значення з усього можливого діапазону. Неперервні регулятори будуються як правило з електронних операційних підсилювачів. Реулятори дискретної дії цифрові змінюють значення регульованої координати об’єкту так само як і регулятори первинної дії але в них зміна величини відбувається лише в певні моменти...
75427. Двохпозиційні регулятори 96 KB
  Принцип роботи Двохпозиційні регулятори забезпечують хорошу якість регулювання для інерційних обєктів з малим запізнюванням не вимагають настройки і прості в експлуатації. Ці регулятори представляють звичайний і найбільш широко поширений метод регулювання...
75428. Передумови розвитку мехатроніки і сфери застосування мехатронних систем. Класифікаційні ознаки мехатроніки 53.5 KB
  Передумови розвитку мехатроніки і сфери застосування мехатронних систем. Класифікаційні ознаки мехатроніки Останніми роками виникла і бурхливо розвивається у всьому світі нова галузь науки і техніки мехатроніка. Вузли модулі і системи мехатроніки МС стають основою технологічних машин і агрегатів з новими властивостями для різних галузей промисловості а також вони можуть бути використані при розробці периферійних пристроїв устроїв...
75429. Концепція побудови мехатронних систем. Визначення і термінологія мехатроніки 52.5 KB
  Мехатроніка це нова галузь науки і техніки присвячена створенню і експлуатації машин і систем з компютерним управлінням рухом яка базується на знаннях в області механіки електроніки і мікропроцесорної техніки інформатики і компютерного управління рухом машин і агрегатів.
75430. Механічні та електричні інтерфейси сенсорів. Оптикомеханічні і фото імпульсні здавачі 45.5 KB
  Інтерфейси сенсорів залежно від фізичного характеру вхідних змінних стану системи можна розділити на електричні і механічні. До механічних відносяться приєднувальні пристрої для датчиків зворотного звязку приводів (оптикомеханічних, фотоімпульсних, кодових, тахогенераторів, потенціометрів, резольверов)
75431. Основні принципи техніки керування 511 KB
  Механічна енергія з валу електричного двигуна передається до регулювальної передачі в якій швидкість напрям та час тривання обертання стартстоп можуть регулюватися за допомогою механічних пневматичних гідравлічних або електричних сигналів. Це можна здійснити перериваючи неперервний обертовий рух за допомогою додаткового доданого до передачі вимикального механізму. Регульовані передачі. У більшості випадків потужність отримувана на вхідному валі передачі привідному є постійна.
75432. Передачі кочення 566.5 KB
  У регулювальних передачах кочення передавання моменту обертання здійснюється за допомогою конусних або кулькових елементів кочення рис. Елементами кочення в регулювальних планетарних передачах є наприклад конусні диски які обертаються планетарно навколо привідного вала рис. Рис. Фрикційна передача з Рис.
75433. Безконтактні вимикачі 32.5 KB
  Давач чи датчик У більшості сучасних словників української мови термін давач подається як єдиний можливий відповідник російського терміну рос. датчик. Слово датчик увійшло в українську як калька з російської і деякі словники фіксують обидва терміни давач та датчик хоч подають останній як менш рекомендований.
75434. Класифікація безконтактних вимикачів за принципом дії: індуктивні, ємкісні, оптичні, магніточутливі (геконові) 67.5 KB
  За вхідними фізичними величинами що підлягають перетворенню давачі бувають: електричні та магнітні; теплових величин; механічних величин; оптичних параметрів; форми та розмірів; акустичних величин; концентрації та складу; іонізаційного випромінення. За фізикохімічними ефектами що лежать в основі роботи вимірювальних перетворювачів розрізняють давачі: резистивні; ємнісні електростатичні; індуктивні та електромагнітні; електричного заряду напруги або струму; зміни геометричних розмірів маси або положення; оптичних ефектів;...