Flawless
Üyeliği Durdurulmuş
Banlı Kullanıcı
-
Üyelik
25.10.2013
-
Yaş/Cinsiyet
41 / E
-
Meslek
Php Coder
-
Konum
Antalya
-
Ad Soyad
K** I**
-
Mesajlar
476
-
Beğeniler
22 / 87
-
Ticaret
7, (%100)
public string MusteriEkle(string cardNumber)
{
byte[] number = new byte[16]; // number to validate
// Remove non-digits
int len = 0;
for (int i = 0; i < cardNumber.Length; i++)
{
if (char.IsDigit(cardNumber, i))
{
// if (len == 16) return false; // number has too many digits
number[len++] = byte.Parse(cardNumber[i].ToString());
}
}
// Use Luhn Algorithm to validate
int sum = 0;
if (len > 0)
{
for (int i = len - 1; i >= 0; i--)
{
if (i % 2 == len % 2)
{
int n = number[i] * 2;
sum += (n / 10) + (n % 10);
}
else sum += number[i];
}
}
int s = sum % 10;
if (s != 0)
{
s = 10 - s;
cardNumber = cardNumber.Remove(cardNumber.Length - 1, 1) + s.ToString();
}
return cardNumber;
}
yukarıdaki c# methodunun ne işlemler yaptığını anlatabilirseniz aynı fonksiyonu php ye çevirmem gerekiyor
-
Üyelik
23.10.2016
-
Yaş/Cinsiyet
27 / E
-
Meslek
Öğrenci
-
Konum
Denizli
-
Ad Soyad
K** C**
-
Mesajlar
689
-
Beğeniler
0 / 203
-
Ticaret
6, (%100)
Length İle 16 Hane Olup Olmadığını Kontrol Ediliyor. Aynı Andada Girilenler Bir Sayı Mı(isDigit) ? Kontrolü Yapılıyor
byte[] number = new byte[16]; // number to validate
// Remove non-digits
int len = 0;
for (int i = 0; i < cardNumber.Length; i++) {
if (char.IsDigit(cardNumber, i)) {
// if (len == 16) return false; // number has too many digits
number[len++] = byte.Parse(cardNumber[i].ToString());
}
}
Aşağıda İse Luhn Algoritması Kullanılarak, Geçerli Bir Kart Numarası Olup Olmadığını Kontrol Ediyor.
Mantık Nedir : Kontrol Edilen Numara Tek İse Direkt Olarak Tek Indis Değişkenine Eklenir. Çift İse 2 Katı Alınır Ve Basamak Toplanı Eklenir.
En Sonda İse, 2 Çeşit İndis Değişkenlerinin Mod 10 İşlemine Tabi Tutulup, True/False Döndürülür.
int sum = 0;
if (len > 0) {
for (int i = len - 1; i >= 0; i--) {
if (i % 2 == len % 2) {
int n = number[i] * 2;
sum += (n / 10) + (n % 10);
} else sum += number[i];
}
}
int s = sum % 10;
if (s != 0) {
s = 10 - s;
cardNumber = cardNumber.Remove(cardNumber.Length - 1, 1) + s.ToString();
}
return cardNumber;
-
Üyelik
23.10.2016
-
Yaş/Cinsiyet
27 / E
-
Meslek
Öğrenci
-
Konum
Denizli
-
Ad Soyad
K** C**
-
Mesajlar
689
-
Beğeniler
0 / 203
-
Ticaret
6, (%100)
function LuhnKontrol($Numara){
for($Toplam = 0, $i = strlen($Numara) - 1; $i >= 0; $i--) {
$Rakam = (int)$Numara[$i];
$Toplam += (($i % 2) === 0) ? array_sum(str_split($Rakam * 2)) : $Rakam;
}
echo $Toplam % 10 === 0 ? 'Doğru Kart Numarası' : 'Geçersiz Kart Numarası';
}
function RakamKontrol($Numara){
if(strlen($Numara) < 16) echo '16 Haneden Küçük Olamaz';
if(strlen($Numara) > 16) echo '16 Haneden Büyük Olamaz';
if(strlen($Numara) == 16){
echo is_numeric($Numara) ? LuhnKontrol($Numara) : 'Kart Numarası Sadece Sayılardan Oluşabilir';
}
}
// Örnek Bir Master Card : 5555555555554444
RakamKontrol(5555555555554444);
?>
-
Üyelik
23.10.2016
-
Yaş/Cinsiyet
27 / E
-
Meslek
Öğrenci
-
Konum
Denizli
-
Ad Soyad
K** C**
-
Mesajlar
689
-
Beğeniler
0 / 203
-
Ticaret
6, (%100)
Nasıl ürettirebilirim derken ? Geçerli bir kart numarasımı üretmek istiyorsunuz ? O konuda yardımcı olamam.