code, coding, php, programming, web

Ελεγχος Εγκυρότητας Α.Φ.Μ. (PHP Version)

Απλώς για να υπάρχει διαθέσιμο σε όποιον το χρειαστεί, η php version του κώδικα που υπάρχει στο άρθρο Ελεγχος Εγκυρότητας Α.Φ.Μ.

<?php
    function CheckAFM($afm)
    {
        if (!preg_match('/^(EL){0,1}[0-9]{9}$/i', $afm))
            return false;
        if (strlen($afm) > 9)
            $afm = substr($afm, 2);

        $remainder = 0;
        $sum = 0;

        for ($nn = 2, $k = 7, $sum = 0; $k >= 0; $k--, $nn += $nn)
            $sum += $nn * ($afm[$k]);
        $remainder = $sum % 11;

        return ($remainder == 10) ? $afm[8] == '0'
                                  : $afm[8] == $remainder;
    }
?>

Εχει μερικές μικροδιαφορές από τις C, C# Versions, αλλά ήταν απαραίτητο αφού προοριζόταν για χρήση σε ιστοσελίδα…

2 comments to “Ελεγχος Εγκυρότητας Α.Φ.Μ. (PHP Version)”

You can leave a reply or Trackback this post.
  1. Επίσης Θα μπορούσε να χρησιμοποιηθεί κάποιο από τα web services για να ελεγχθεί αν το ΑΦΜ ανήκει σε κάποιο νομικό (ή και φυσκό) πρόσωπο.
    Για παράδειγμα (στα ελληνικά ΑΦΜ)

    function checkVAT($vatNo)
    {
        $client = new SoapClient(
            "http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
        );
        $result = $client->checkVat(array('countryCode'=>'EL','vatNumber'=>$vatNo));
        return $result->valid;
    }
    
    • Καλησπέρα φίλε μου,

      Μπορείς να βάλεις τον έλεγχο μέσα σε try catch, για να μην πέφτει το σύστημα σε περίπτωση σφάλματος:

      $client = new SoapClient(“http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl”);
      try{
      $params = array(‘countryCode’ => ‘EL’, ‘vatNumber’ => $vatNo);
      $r = $client->checkVat($params);
      } catch(SoapFault $e) {
      echo $e->faultstring;
      exit;
      }

Write a Reply or Comment

Your email address will not be published.