<?php // Licence Publique Générale GNU (GNU General Publique License), Copyright 2005-2008 Geffrotin Yann

  // Génération de numéros de carte bancaire (credit card generator)

  
  //$MonNum = 52 ; // Pour test : mt_rand('1', 181/3) * 3 + 1
  
  $BIN = 5678;  //echo "BIN ".$BIN."</br>"; // 5678
  
  $NomIIN = "GNU Free Card"; //echo "NomIIN ".$NomIIN."</br>"; // "GNU Free Card"
  
  $LongueurChCCN = 16; //echo "LongueurChCCN ".$LongueurChCCN."</br>"; // 16
  
  $CCN = $BIN; //init
  
  for($o=1;$o<=16-strlen($BIN);$o++){
    $CCN = $CCN.mt_rand('0','9');
  }
  
  
  
  $somme = 0;
  
  $InverseCCN = strrev ($CCN); // Inverse
  
  for($j=0; $j<$LongueurChCCN; $j++){
  
    $chiffre = $InverseCCN[$j];
    
    if($j==1 or $j==3 or $j==5 or $j==7 or $j==9 or $j==11 or $j==13 or $j==15 or $j==17 or $j==19){ 
      $chiffre = $chiffre * 2; // Doubler les chiffres impaires
    }
    
    if( $chiffre > 9 ){ 
      $chiffre = $chiffre - 9; //(ex : 14 -> 1+4 -> 5, 18 -> 1+8 -> 9)
    }
    
    $somme = $somme + $chiffre; // Ajouter à la somme
  }
  
  if(bcmod($somme, '10') != 0){ // Si modulo 10 de la somme vaut 0 alors CCN vrai sinon faux
    $VCC = substr($CCN, 15, 1);
    if(0 == $VCC){
      $MettreVCC = 10 - bcmod($somme, '10');
    }else{
      if($VCC < bcmod($somme, '10') ){
        $MettreVCC = 10 + $VCC - bcmod($somme, '10');
      }else{
        $MettreVCC = $VCC - bcmod($somme, '10');
      }
    }
    
    $CCN = substr($CCN, 0, 15);
    $CCN = $CCN.$MettreVCC;
    
  }
 
  //echo  "CCN ".$CCN;
  
  $moisexp = date('m');
  $anneeexp = date('Y') + 3;
  $cryvis = mt_rand('111', '999');
  
  mysql_query("INSERT INTO freepay_carte_bancaire VALUES ('".$CCN."', '".$NomIIN."', '".$moisexp."', '".$anneeexp."', '".$cryvis."', '".$IBAN."', '".$_SESSION['mailcli']."')"); 
  

?>
