logo
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Преобразование строки к верхнему и нижнему регистру

В РНР существует четыре функции, предназначенных для изменения регистра строки: strtolower( ); strtoupper( ); ucfirst( ); ucwords( ).

Функция string strtolower(string $str) преобразует все алфавитные символы строки к нижнему регистру.

$sentence = "COOKING and PROGRAMMING PHP are my TWO favorite pastimes!";

$sentence = strtolower($sentence);

// $sentence= "cooking and programming php are my two favorite pastimes!"

$sentence = "cooking and programming PHP are my two favorite pastimes!";

$sentence = strtoupper($sentence);

// $sentence= "COOKING AND PROGRAMMING PHP ARE MY TWO FAVORITE PASTIMES!"

Преобразование к верхнему регистру выполняется функцией string strtoupper ( $str)

Функция ucfirst(string $str ) преобразует к верхнему регистру первый символ.

Функция ucwords(string $str) преобразует к верхнему регистру первую букву каждого слова в строке.

Хэш-функции

md5(string $str)

Возвращает хэш-код строки $str, основанный на алгоритме под названием "MD5 Message-Digest Algorithm". Хэш-код — это просто строка, практически уникальная для каждой из строк $str. То есть вероятность того, что две разные строки, переданные в $str, дадут нам одинаковый хэш-код, стремится к нулю.

Если длина строки $str может достигать нескольких тысяч символов, то ее MD5-код занимает максимум 32 символа.

Для чего нужен хэш-код и, в частности, алгоритм MD5? Например, для проверки паролей на истинность.

Пусть, к примеру, есть система со многими пользователями, каждый из которых имеет свой пароль. Можно, хранить эти пароли в обычном или зашифрованном виде в файле, но это небезопасно. В файле паролей будем хранить не сами пароли, а их (MD5) хэш-коды. При попытке пользователя войти в систему вычислим хэш-код введенного им пароля и сравним его с тем, который записан у нас в файле или базе данных. Если коды совпадут, значит, все в порядке.

Конечно, при вычислении хэш-кода какая-то часть информации о строке $str безвозвратно теряется. И именно это позволяет нам не опасаться, что злоумышленник, получивший файл паролей, сможет его когда-нибудь расшифровать. Ведь в нем нет самих паролей, нет даже их каких-то связных частей!

Пример использования алгоритма хеширования MD5:

<?php

$pass_a = "MySecret";

$pass_b = "MySecret";

//Выводим хеш-код строки MySecret($pass_a) - исходный пароль

echo "<b>Хеш-код исходного пароля '$pass_a':</b><b style=\"color:green\">".md5($pass_a)."</b><br>";

//Выводим хеш-код строки MySecret($pass_b)-верифицируемый пароль

echo "<b>Хеш-код верифицируемого пароля '$pass_b':</b><b style=\"color:green\">".md5($pass_b)."</b><br>";

// Сравниваем хеш-коды MD5 исходного и верифицируемого пароля

echo "<h3>Проверяем истинность введенного пароля:</h3>";

if(md5($pass_a)===md5($pass_b))

echo "<h3 style=\"color:green\">Пароль верный! (Хеш-коды совпадают)</h3>";

else echo "<h3 style=\"color:red\">Пароль неверный! (Хеш-коды не совпадают)</h3>"

// выводит: Пароль верный! (Хеш-коды совпадают)

// Попробуйте изменить значение строки $pass_b :

?>

Функция crc32() вычисляет 32-битную контрольную сумму строки $str. Результат ее работы — 32 битное (4-байтовое) целое число. Эта функция работает гораздо быстрее md5(), но в то же время выдает гораздо менее надежные "хэш-коды" для строки.