Таблица MySQL MyISAM является комбинацией трех файлов:
необходимо смочь восстановить путем копирования их в папке базы данных (В Linux, местоположение по умолчанию /var/lib/mysql/
)
, необходимо сделать это, в то время как сервер не работает.
Да, указанный вами сайт правильный. Многие сайты, в т.ч. Google Checkout, я полагаю, полагается на автоматическое определение типа карты. Это удобно, делает интерфейс менее загроможденным (на одно поле ввода меньше) и экономит время. Вперед!
Эта реализация на Python должна работать для AmEx, Discover, Master Card, Visa:
def cardType(number):
number = str(number)
cardtype = "Invalid"
if len(number) == 15:
if number[:2] == "34" or number[:2] == "37":
cardtype = "American Express"
if len(number) == 13:
if number[:1] == "4":
cardtype = "Visa"
if len(number) == 16:
if number[:4] == "6011":
cardtype = "Discover"
if int(number[:2]) >= 51 and int(number[:2]) <= 55:
cardtype = "Master Card"
if number[:1] == "4":
cardtype = "Visa"
return cardtype
Википедия содержит список большинства префиксов карт. Некоторые карточки отсутствуют по опубликованной вами ссылке. Также похоже, что предоставленная вами ссылка действительна.
Одна из причин, по которой следует запросить тип карты, - это дополнительная проверка, сравните то, что предоставил пользователь, с номером.
Я почти уверен, что по крайней мере для MasterCard, Visa, Discover и American Express, что это точно. Я никогда не работал ни с кем из других.
См. Самый низ этой страницы: http://www.merchantplus.com/resources/pages/credit-card-logos-and-test-numbers/
Также вам может быть полезно " http://www.beachnet.com/~hstiles/cardtype.html
Это довольно интересно: http://en.wikipedia.org/wiki/Bank_card_number
вот скрипт, который я использую, который работает с текущими диапазонами карт. также проверяет действительность номера.
/**
* checks a given string for a valid credit card
* @returns:
* -1 invalid
* 1 mastercard
* 2 visa
* 3 amex
* 4 diners club
* 5 discover
* 6 enRoute
* 7 jcb
*/
function checkCC(val) {
String.prototype.startsWith = function (str) {
return (this.match("^" + str) == str)
}
Array.prototype.has=function(v,i){
for (var j=0;j<this.length;j++){
if (this[j]==v) return (!i ? true : j);
}
return false;
}
// get rid of all non-numbers (space etc)
val = val.replace(/[^0-9]/g, "");
// now get digits
var d = new Array();
var a = 0;
var len = 0;
var cval = val;
while (cval != 0) {
d[a] = cval%10;
cval -= d[a];
cval /= 10;
a++;
len++;
}
if (len < 13)
return -1;
var cType = -1;
// mastercard
if (val.startsWith("5")) {
if (len != 16)
return -1;
cType = 1;
} else
// visa
if (val.startsWith("4")) {
if (len != 16 && len != 13)
return -1;
cType = 2;
} else
// amex
if (val.startsWith("34") || val.startsWith("37")) {
if (len != 15)
return -1;
cType = 3;
} else
// diners
if (val.startsWith("36") || val.startsWith("38") || val.startsWith("300") || val.startsWith("301") || val.startsWith("302") || val.startsWith("303") || val.startsWith("304") || val.startsWith("305")) {
if (len != 14)
return -1;
cType = 4;
} else
// discover
if (val.startsWith("6011")) {
if (len != 15 && len != 16)
return -1;
cType = 5;
} else
// enRoute
if (val.startsWith("2014") || val.startsWith("2149")) {
if (len != 15 && len != 16)
return -1;
// any digit check
return 6;
} else
// jcb
if (val.startsWith("3")) {
if (len != 16)
return -1;
cType = 7;
} else
// jcb
if (val.startsWith("2131") || val.startsWith("1800")) {
if (len != 15)
return -1;
cType = 7;
} else
return - 1;
// invalid cc company
// lets do some calculation
var sum = 0;
var i;
for (i = 1; i < len; i += 2) {
var s = d[i] * 2;
sum += s % 10;
sum += (s - s%10) /10;
}
for (i = 0; i < len; i += 2)
sum += d[i];
// musst be %10
if (sum%10 != 0)
return - 1;
return cType;
}
Как потребитель, я ненавижу сначала выбирать карту. Я просто хочу начать набирать номер.
Этот вопрос обсуждается в Web Form Design Вроблевски на страницах 153-154. Он находится в разделе «Удаление вопросов» главы «Ненужные данные». В качестве примера приведен Paypal, который выделяет тип карты, когда вы вводите свой номер.
Я слышал одну вескую причину, чтобы заставить их выбирать (даже если вы можете это понять). Чтобы они знали список принимаемых вами кредитных карт.
Если все кредитные карты, которые вы принимаете, имеют одинаковые свойства, просто позвольте пользователю ввести номер карты и другие свойства (срок действия, CVV и т. Д.). Однако для некоторых типов карт необходимо ввести другие поля (например, дату начала или номер выпуска для карт UK Maestro). В этих случаях вам либо нужно иметь все поля, что сбивает пользователя с толку, либо какой-то Javascript, чтобы скрыть / показать соответствующие поля, что снова делает работу пользователя немного странной (поля исчезают / появляются по мере ввода номера кредитной карты) . В таких случаях я рекомендую сначала узнать тип карты.
Вот быстрый грязный способ автоматически определять тип карты и показывать ее пользователю во время набора.
Это означает а) пользователю не нужно его выбирать и б) они не будут тратить время на поиски раскрывающегося списка, которого не существует.
Очень простая версия jQuery для Amex, Visa и Mastercard. если вам нужны другие типы карт, вы можете использовать
$('[id$=CreditCardNumber]').assertOne().keyup(function(){
// rules taken from http://en.wikipedia.org/wiki/Credit_card_number#cite_note-GenCardFeatures-0
var value = $(this).val();
$('#ccCardType').removeClass("unknown");
if ((/^4/).test(value)) {
$('#ccCardType').html("Visa");
return;
}
if ((/^5[1-5]/).test(value)) {
$('#ccCardType').html("Mastercard");
return;
}
if ((/^3[47]/).test(value)) {
$('#ccCardType').html("Mastercard");
return;
}
$('#ccCardType').html("Enter card number above");
$('#ccCardType').addClass("unknown");
});
Это jQuery, который сопровождает это (ASP.NET MVC):
Card number: <%= Html.TextBox("PaymentDetails.CreditCardDetails.CreditCardNumber")%>
Card Type: <span id="ccCardType" class="unknown">Enter card number above</span>
У меня есть правило css для .unknown
для отображения серого текста.
Вот Полный код C # или VB для всех видов вещей, связанных с CC в codeproject.
Эта статья появилась уже пару лет без отрицательных комментариев.