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

}

?>


 

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

30746. США и Латинская Америкак: эволюция и проблемы взаимоотношений во второй половине 20 столетия 26.5 KB
  Во время Второй мировой войны создались благоприятные условия для развития национального капитала в Латинской Америке. Выросли цены на сырье ослабло влияние национального капитала увеличились средства для вложения в национальную промышленность. Новый уровень глобализации иначе говоря огромная роль мировых хозяйственных связей привлечение современной технологии и иностранного капитала стал частью стратегии латиноамериканских стран. Основным источником накопления капиталов и модернизации стали широкое привлечение иностранного...
30747. Причины зарождения и сущность фашизма 24 KB
  в конкретной исторической обстановке фашизм нужен определенным кругам империализма чтобы справиться с возрастанием революционного движения разрешить в свою пользу классовые противоречия которые нельзя разрешить старыми методами и формами борьбы. Мировому капиталу фашизм был нужен чтобы разрушить главной оплот международного революционного процесса и антиимпериалистической борьбы – СССР. Германский фашизм сопровождался политическими убийствами погромами и др.
30748. Латинская Америка: что принесли неолиберальные преобразования (на опыте 1980 - 1990-х гг.) 27 KB
  стимулировал экономический рост Латинской Америки в начале 90х гг. Другая болевая точка современной Латинской Америки безработица принявшая беспрецедентные масштабы. Финансовоэкономическая стратегия Латинской Америки на 90е гг. В задачи консенсуса входило преодоление инфляции сокращение бюджетного дефицита укрепление национальных валют Латинской Америки.
30749. Причины и характер первой мировой войны, цели воюющих сторон. (28 июля 1914 — 11 ноября 1918) 23.5 KB
  28 июля 1914 11 ноября 1918 стремление к переделу мира в результате противостояния двух военных блоков: Тройственного Союза Германия АвстроВенгрия Италия и Антанты Англия Франция Россия борющихся за гегемонию на континенте. слабое рабочее движение в результате в ряде стран победили партии войны в правящих кругах ряда Западных стран Германия Великобритания АвстроВенгрия и Франция. Цели: Германия – создать Новую Европу где влияния Англии Франции и России свелись бы к нулю. АвстроВенгрия как и Германия за...
30750. Бетонирование колонн, стен, перекрытий 14.54 KB
  При возведении стен в разборнопереставной опалубке смесь укладывают участками высотой не более 3 м. В стены толщиной более 05 м при слабом армировании подают бетонную смесь подвижностью 4. Бетонную смесь подают непосредственно в опалубку в нескольких точках по длине участка бадьями виброжелобами бетононасосами. При высоте стен более 3 м используют звеньевые хоботы при этом смесь укладывают горизонтальными слоями толщиной 03.
30751. Назначение и виды опалубок. Требования к опалубке. Оборачиваемость опалубных форм 16.57 KB
  Поверхность опалубки непосредственно примыкающая к бетону должна быть плотной иметь малую с бетоном адгезию и не иметь щелей чтобы не вытекало цементное молоко. Важнейшим показателем качества опалубки является ее оборачиваемость т. Применение инвентарной многооборачиваемой опалубки из унифицированных элементов с модульным изменением размеров и укрупненных блоков способствует снижению трудоемкости и стоимости опалубочных работ. Для изготовления опалубки используют доски из древесины II III и IV сортов хвойных пород допускается...
30752. Разборно-переставная опалубка. Область применения, конструкция 15.58 KB
  Технологический процесс устройства опалубки состоит в следующем. Щиты опалубки или собранные из них крупные опалубочные элементы устанавливают вручную или краном и закрепляют в проектном положении. Масса элемента этой опалубки до 70 кг. Щиты опалубки изготовляют из досок толщиной 19.
30753. Объёмно-переставная опалубка. Конструкция, область применения 17.24 KB
  Секции при соединении образуют туннели опалубки на квартиру или на всю ширину здания. Секции опалубки могут иметь переменную ширину в зависимости от принятого шага стен и различную длину. П и Гобразные секции опалубки устанавливают на перекрытии ранее забетонированного этажа выверяют и закрепляют между собой в продольном и поперечном направлениях. Общие конструктивные признаки опалубки: наличие системы механических домкратов для выверки и установки в проектное положение; катучие опоры для перемещения секций опалубки при монтаже и...
30754. Скользящая опалубка. Технология бетонирования стен в скользящей опалубке 14.52 KB
  При бетонировании следят за вертикальностью домкратного стержня и за бетонной поверхностью Применение скользящей опалубки особенно эффективно при строительстве высотных зданий и сооружений с минимальным количеством оконных и дверных проемов конструктивных швов и закладных элементов. К ним относятся силосы для хранилища материалов дымовые трубы и градирни ядра жесткости высотных зданий резервуары для воды радиотелевизионные башни. Другая потенциальная область использования скользящей опалубки строительство зданий атомных реакторов...