Проверка корректности номера банковской карты
Проверка корректности номера банковской карты
Для проверки корректности номера банковской карты используется алгоритм, разработанный еще в 1954 году Гансом Питером Луном, сотрудником фирмы IBM. Этот алгоритм очень прост в реализации на различных языках программирования, и, хоть он не дает 100% гарантии от преднамеренного искажения данных, может легко выявить случайные ошибки при вводе.
Для одного из рабочих проектов мне потребовалось реализовать проверку корректности введенного номера банковской карты, вот что у меня получилось на PHP:
Code (PHP) : Убрать нумерацию
- //----------------------------------------------------------------------
- // Проверка корректности номера банковской карты по алгоритму Луна
- //----------------------------------------------------------------------
- // 1. Цифры проверяемой последовательности нумеруются справа налево.
- // 2. Цифры, оказавшиеся на нечетных местах, остаются без изменений.
- // 3. Цифры, стоящие на четных местах, умножаются на 2.
- // 4. Если в результате такого умножения возникает число больше 9,
- // оно заменяется суммой цифр получившегося произведения -
- // однозначным числом, то есть цифрой.
- // 5. Все полученные в результате преобразования цифры складываются.
- // Если сумма кратна 10, то исходные данные верны.
- //----------------------------------------------------------------------
- function check_card_number($str) {
- $str=strrev(preg_replace('/[^0-9]/','',$str));
- $chk=0;
- for ($i=0; $i<strlen($str); $i++) {
- $tmp=intval($str[$i])*(1+$i%2);
- $chk+=$tmp-($tmp>9?9:0);
- }
- return !($chk%10);
- }
Code (PHP) : Убрать нумерацию
- check_card_number('4276 8770 1103 5748'); // true
- check_card_number('4346-7820-0751-9190'); // true
- check_card_number('67619600 0029070555'); // true
- check_card_number('67619600 0000551045'); // true
- check_card_number('63900238 9016596165'); // true
- check_card_number('1234 5678 1234 5678'); // false
Просмотров: 15197 | Комментариев: 0
Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария
Комментарии отключены администратором сайта