RSS

  • YouTube
  • LinkedIn
  • Google

Algoritimo de validação de CPF brasileiro –; Individuelle Registrierung in PHP

Neste artigo explicarei passo a passo na transformação de um algorítimo de verificação da validade de um CPF para código em PHP.

Se você já conhece o algorítmo e quer ir direto aos códigos disponíveis, Klicken Sie hier.

Mas o que é o CPF?

CPF é o acrônimo para Cadastro de Pessoa Física. Ele é um número de documento brasileiro atualmente gerenciado e emitido pela Receita Federal. Todo brasileiro tem o direito (ou o dever) de ter um e somente com ele é possível ter acesso a serviços bancários, matricular-se em cursos de graduação públicos, assumir cargo através de concurso público, ter cartão de crédito, entre outros exemplos.

Composição do CPF

O CPF é composto de onze algarismos, sendo que os ultimos três algarismos possuem significados que explicaremos a seguir.

O nono dígito, lendo da esquerda para a direita, indica a Região Fiscal onde ele foi emitido. Há dez regiões para os algarismo de zero a nove conforme tabela abaixo.

1 – DF, GO, MS, MT e TO
2 – AC, AM, AP, PA, RO e RR
3 – CE, MA e PI
4 – AL, PB, PE, RN
5 – BA e SE
6 – MG
7 – ES e RJ
8 – SP
9 – PR e SC
0 – RS

Os primeiro oito algarismos são o numero base.

Os ultimos dois algarismo são os dígitos verificadores.

Esses dígitos são gerados a partir de cálculos dos nove primeiros algarismos de acordo com a seguintes regras:

Primeiro Dígito verificador

Para o primeiro dígito, pegamos os 8 primeiros algarismos e multiplicamos cada um deles por um número iniciado em 10 e a medida em que vamos avançando para a direita, diminuimos em 1 esse multiplicador e somamos todos os resultados.

Para melhor entendimento, tomemos 123.456.789-XY como exemplo de CPF a ter o digito XY calculado.

1 x 10 = 10
2 x 9 = 18
3 x 8 = 24
4 x 7 = 28
5 x 6 = 30
6 x 5 = 30
7 x 4 = 28
8 x 3 = 24
9 x 2 = 18
Somando 10 + 18 + 24 + 28 + 30 + 30 + 28 + 24 + 18 temos 210.

Agora, com o total obtido temos duas forma de chegar ao digito verificador.

Método 1

Multiplicamos 210 por 10, dividimos por 11 e pegamos o resto.

Temos então: 210 x 10 = 2.100

2.100 / 11 = 190 com resto 10.

Se o resto for 10 o dígito verificador é zero, Andernfalls, o resto é o dígito verificador.

In unserem Fall, como o resto é igual a 10 o primeiro dígito será 0 (0 (null)).

Método 2

Obtemos o resto da divisão de 210 por 11.

Temos então: 210 / 11 é igual a 19 com resto 1.

Aqui temos uma regra para quando o resto for 0 (0 (null)) oder 1 (um). Quando isso acontece o dígito verificador é 0 (null), do contrário subtraimos o resto de 11 para obter o dígito verificador.

Für unseren Fall, como temos resto 1, o nosso primeiro dígito verificador será 0 (0 (null)).

Segundo dígito verificador

Para obter o segundo dígito verificador, acrescentamos o primeiro dígito verificador aos 9 algarismos iniciais e fazemos novamente o mesmo processo feito para o primeiro dígito, com a diferença de que agora iniciamos a partir do segundo dígito.

Nosso CPF já está com o valor 123.456.789-0X e as operações necessárias estão abaixo.
2 x 10 = 20
3 x 9 = 27
4 x 8 = 32
5 x 7 = 35
6 x 6 = 36
7 x 5 = 35
8 x 4 = 32
9 x 3 = 27
0 x 2 = 0
Somando 20 + 27 + 32 + 35 + 36 + 35 + 32 + 27 + 0 temos 244.

Agora, com o total obtido devemos usar uma das duas formas já explicadas para chegar ao dígito verificador.

Método 1

Multiplicamos 244 por 10, dividimos por 11 e pegamos o resto.

Temos então: 244 x 10 = 2.440

2.440 / 11 = 221 com resto 9.

Se o resto for 10 o dígito verificador é zero, Andernfalls, o resto é o dígito verificador e no nosso caso temos 9 como segundo dígito verificador.

Método 2

Obtemos o resto da divisão de 244 por 11.

Temos então: 244 / 11 é igual a 22 com resto 2.

Lembrando que temos uma regra para quando o resto for 0 (0 (null)) oder 1 (um) o dígito verificador é zero.

Caso seja maior que 1 subtraimos esse valor de 11 para obter o dígito verificador.

Für unseren Fall, temos 11 ; 2 = 9 como nosso segundo dígito verificador que é o mesmo valor obtido no método 1.

CPF tem um limite para emissão?

Na teoria, podemos ter até 10^8 ou 100.000.000 (cem milhões) de combinações possíveis para cada região. Na prática temos um pouco menos devido ao não uso de algarismos repetidos, zum Beispiel. Embora pareça um número bem grande, ele deverá ser remodelado em algum momento, já que não pode ser reutilizado mesmo quando uma pessoa falece.

Supondo que já existam na região 8 (estadao de São Paulo) cerca de 40 milhões de CPFs emitidos (não consegui dados fidedignos em 2022 por isso estou usando um número aproximado da população residente que é de 44,5 milhões de pessoas), restariam aproximadamente 60 milhões de CPFs disponíveis. Com a atual taxa de crescimento de CPFs (ano de 2022) em cerca de 600 mil por ano, o sistema deve aguentar pouco menos de 100 Jahre.

Chegamos aqui ao final da explicação e do exemplo sobre a composição do CPF. O nosso CPF de exemplo ficou como 123.456.789-09. Abaixo temos alguns exemplos de códigos tanto para gerar os dígitos verificadores, quanto para validá-los.

Codigo de validação de CPF para PHP

abaixo temos alguns códigos:

O primeiro código é de uma função em PHP otimizada para ter o menor numero de complexidade ciclomática que consegui. Ele tem uma ligeira alteração no momento do cálculo do segundo digitido verificador. Ao invés de começar pelo segundo algarismo, o codigo começa pelo primeiro e usa o valor 11 como multiplicador. Outra alteração visivel é que para evitar a necessidade de comparação para saber se estamos no nono e decimo digitos, atribuo o valor zero ao ultimo elemento (indice 10) para reduzir mais uma comparação.

O algoritmo utilizado é o método 1 explicado acima e há um pequeno truque para evitar a comparação com o resto igual a 10 que é fazer o módulo de 10 do resto.

// Codigo que valida um CPF informado quanto a validade de seus dígitos verificadores.

   /**
     * 
     * Verifica se um CPF é válido
     * @ author Marcos Regis <marcos@marcosregis.com>
     * @param string $cpf
     * @return bool
     */
    function validar(string $cpf): bool
    {
        if (strlen($cpf) != 11) {
            return false;
        }
        $elementos = (array)str_split($cpf);
        $elementos[10] = 0; // Reduz uma comparação no calculo de $somaB
        $somaA = 0;
        $somaB = 0;
        foreach ($elementos as $indice => $elemento) {
            $multiplicador = count($elementos) - $indice;
            $somaA += (int)$elemento * (int)($multiplicador > 2 ? $multiplicador - 1 : 0);
            $somaB += (int)$elemento * (int)$multiplicador;
        }

        $moduloA = (($somaA * 10) % 11) % 10;
        $moduloB = (($somaB * 10) % 11) % 10;

        return preg_replace('#\d{9}(\d{2})$#', '$1', $cpf) == $moduloA . $moduloB;
    }

Configurando um servidor de Email

Tenho meu próprio servidor de e-mail utilizando ;Postfix, Taubenschlag, MariaDB, Spamassassin, ClamAV, Amavisd-new, Fail2ban, Nginx, Postfixadmin und Roundcube ;unter CentOS 8.
Obwohl es hat einige Rezepte für dieses Paket konfigurieren, Es hat mich viele Stunden, um herauszufinden, wie den Dienst einwandfrei zu halten, jede Konfiguration in der main.cf und in der master.cf und schaffen es am Ende, die Spam-Flut zu reduzieren, die jeden Moment ankommt.
Und Anti-Spam steht im Mittelpunkt dieser Veröffentlichung. Ich haben gelitten und leiden noch immer mit die ständigen Versuche, meine Dienste als ein Zombie oder vergießen von Viren verwenden, Betrug und alles, was Sie können.

Ich aufgehört zu zählen wie oft mein DNS-Dienst beendet durch Übermaß an Verbindung in Entupiam versucht, den Speicher und zwang die s.. a cortar processos para economizar recursos e o ;mit dem Namen ;wurde gewählt als das schwächste Glied.
Also, Dieser Artikel hat Fokus in der richtigen Konfiguration für private Mail-Dienste, ein paar User und einige domains. Dient dazu sicherlich eine Menge dessen, was in dieser kurzen Anleitung, Weltklasse-Service, aber ich glaube, dass in diesen Fällen die Verwendung der Tools oder engagierte und spezialisierte Dienste immer in Betracht gezogen werden sollte.

Então deixemos de lado o falatório para irmos direto ao ;Hand in Hand.

Installation von Paketen

Der erste Schritt besteht darin, alle Pakete zu installieren, die. Roundcube und Postfixadmin laufen unter einem PHP-gestützten Webserver, dessen E-Mail-Konten auf einem Datenbankserver gespeichert werden können. Als Webserver benutze ich Nginx und obwohl ich PostgreSQL bevorzuge, werde ich MariaDB als DBMS verwenden, da die meisten es bereits verwenden (aufgrund von WordPress wahrscheinlich).

Also, am Ende des Installationsvorgangs, Wir hätten einige neue Paket-Repositories installieren sollen.

Aktivieren von Extra Packages-Repositorys für Ihre Distribution, wenn Sie dies noch nicht getan haben. Für CentOS 8 Der folgende Befehl führt dies aus.

$ sudo dnf install epel-release

Zusätzlich, Installieren Sie die Pakete Locke, Htop, Kam, yum-utils, Wget, Netzwerkzeuge, chrony und certbot die an anderen Stellen in der Konfiguration benötigt werden.

$ sudo dnf install -y curl htop vim yum-utils wget net-tools chrony certbot

Postfix

Postfix ;ist ein MTA (Mail-Transfer-Agent). Ein MTA, das die Lücke zwischen Computern für den Austausch von E-Mail-Nachrichten überbrückt. Für unseren Fall, ist das Hauptelement.

Die Version von Postfix, die ich in diesem Dokument verwenden werde, ist die 3.3. Um herauszufinden, welche Version installiert wird, geben Sie:

$ sudo dnf info postfix

Führen Sie zum Installieren den Befehl aus

$ sudo dnf install -y postfix postfix-mysql postfix-pcre

Wir werden den Dienst vorerst noch verlassen, aber bereits konfiguriert, um zusammen mit dem Betriebssystem zu starten.

$ sudo systemctl enable postfix

Taubenschlag

Taubenschlag ;ist ein Imap- und Pop3-Mail-Server. Damit können wir Nachrichten über Postfix senden und empfangen und unter anderem den Zugriff auf den Dienst über die Authentifizierung steuern..
Um Dovecot mit mysql-Unterstützung zu installieren, führen Sie einfach den Befehl:

$ sudo dnf install -y dovecot dovecot-mysql

Noch einmal, wir aktivieren den Dienst, lassen ihn jedoch anhalten.

$ sudo systemctl enable dovecot

Amavis

Amavis ;ist ein Inhaltsfilter für E-Mail. Mit ihm können Sie schädliche Nachrichten mit Spam-Einstellungen filtern, Viren und andere Malware. Im Folgenden finden Sie die Befehle, die es installieren. Es erfordert viele Abhängigkeiten, die aktualisiert und/oder zusammen installiert werden.. Uma dessas dependencias é o ;Spamassassin ;die später eingerichtet werden, zusammen mit allen anderen Paketen, die wir installieren.

Stellen Sie zunächst sicher, dass das PowerTools-Repository aktiviert ist., weil es daraus ist, werden wir amavisd-new installieren.

$ sudo dnf config-manager --set-enabled powertools

Em seguida instalamos o Amavis e algumas dependencias sendo uma delas o ;Clamava ;das ist ein einfaches und ziemlich effizientes Antivirenprogramm für die häufigsten Arten von Bedrohungen und völlig kostenlos.

$ sudo dnf -y install amavisd-new clamd perl-Digest-SHA1 perl-IO-stringy

Wieder, werden wir die Dienste aktivieren, so dass sie immer automatisch starten, aber vorerst lassen sie noch.

$ sudo systemctl enable amavisd spamassassin

MariaDB (oder MySQL)

Normalerweise, quem usa WordPress já possui instalado e configurado o ;MariaDB ;oder MySQL. Wenn das der Fall ist, kann diesen Schritt überspringen.

Ich bevorzuge besonders PostgreSQL, Da die Absicht dieses Dokuments jedoch darin besteht, DevOps die Möglichkeit zu geben, eigene Dienste zu haben, und nicht immer mehrere Instanzen haben kann, habe ich beschlossen, MariaDB zu verwenden. wie so, wenn Sie WordPress später hinzufügen müssen, Sie müssen kein zusätzliches DBMS hinzufügen oder sogar Wrapper verwenden, um PostgreSQL zu unterstützen.

Machen Sie sich an dieser Stelle keine Sorgen über die Einstellungen, weil ich sie später in einer anderen Veröffentlichung detailliert beschreiben werde. Wenn wir mit der Installation fortfahren, sollten wir den Befehl ausführen:

$ sudo dnf install -y mariadb-server

und aktivieren Sie dann den Dienst, um zusammen mit dem System zu starten

$ sudo systemctl enable mariadb

Webserver (Nginx + Php-Fpm)

Die letzten zu installierenden Elemente sind Teil des Webservers. Es ist möglich, dass Sie bereits einen wie Apache laufen haben, damit dieser Punkt übersprungen werden kann. Wenn Sie einen neuen Server starten oder wenn Sie keine Intimität mit apache und PHP-Konfiguration haben, Empfehlen Sie, die Tipps dieser Installation zu befolgen.

Eu gosto muito do ;Nginx ;e vou usar em conjunto com o ;Php-Fpm.

$ sudo dnf install -y nginx php-fpm

Zu diesem Zeitpunkt haben wir bereits alle Dateien, die zum Starten der Konfiguration des Mail Servers erforderlich sind..

Ich bin zu faul

Tippen Sie nicht gerne oder machen Sie sich keine Sorgen um die Details jedes installierten Elements.. Ihre Probleme sind vorbei!

Sie können alle Befehle in diesem Dokument mit den folgenden Zeilen ausführen.:

AUFMERKSAMKEIT! Dieses Skript ist nur eine Datei mit den Befehlszeilen. Irgendwann funktioniert es je nach Systemeinstellungen möglicherweise nicht richtig.

$ sudo dnf update
$ sudo dnf install -y epel-release
$ sudo dnf config-manager --set-enabled powertools
$ sudo dnf -y install --enable-repo=epel-release,powertools curl htop vim yum-utils wget net-tools chrony certbot postfix dovecot amavisd-new clamd perl-Digest-SHA1 perl-IO-stringy mariadb-server ngixn php-fpm
$ sudo systemctl enable postfix mariadb spamassassin amavisd dovecot nginx php-fpm 

Mit allem installierten können wir die Einstellungen starten. Comecemos pelo ;MariaDB.

Antispam für E-Mail-Server

Ich habe bereits vor einiger Zeit einen Artikel veröffentlicht, der zeigt, wie ich einen Server und e-Mail mit den gängigsten Tools für OpenSource-Umgebungen unter Linux eingerichtet habe.. gebraucht Postfix, Taubenschlag, Postfixadmin, Neu, Roundcube, Neujahr und Spamassassin.

Jetzt zeige ich ein weiteres Tool, das eine Alternative zu Spamassassin ist, MailCleaner, Neujahr.



Lesen Sie weiter >>

Protegendo seu WordPress de ataques

Diese Seite, auf die Sie zugreifen, ist eine Installation der WordPress. Ich mag die Leichtigkeit davon.

WordPress ist wirklich gut in der Erstellung eines Blogs schnell in einem VPS oder Cloud, aber seine Leichtigkeit ist auch sein größter Defekt.

Wie einfach ist es, eine Website mit ihm zu haben, die überwiegende Mehrheit der Im Internet vorhandenen Seiten werden mit ihm gemacht, und folglich zieht dies diejenigen an, die nach Fehlern in der Programmierung ihrer Open Source suchen.



Lesen Sie weiter >>

Docker auf Ubuntu. Dienst nginx konnte nicht erstellt werden: ADD fehlgeschlagen: stat /var/lib/docker/tmp/docker-builder(;)/startup.sh: keine solche Datei oder ein solches Verzeichnis

Docker in Ubuntu

Manchmal, bei Verwendung von Laradock, Dieser Fehler tritt auf, nachdem Sie einen Containerneuaufbau mit no such file or directory Nachricht auf docker-compose up -d –build nginx Befehl.

Mir ist nicht klar, worum es jetzt geht., aber das Ausführen des Befehls mit sudo, wir können es erfolgreich führen.

Seems that the regular user need access rights to directory /var/lib/docker/tmp/ but do not have. So, running with sudo the trouble is bypassed and the build can finished normally.

Nach dem Bau von Containern mit sudo, ist es möglich, es zu entladen und neu zu laden, ohne sudo.

Servidor de Email –; Teil 4 ; Postfix 3

Teil 1 ; Einrichten von Datei-main.cf

Dies ist der vierte Teil des Prozesses der Erstellung des Mail-Servers in einem CentOS 8 und dem ersten Teil der Postfix-Konfiguration. Wenn Sie durch Zufall hierher gekommen, lesen Sie zuerst eine der folgenden Veröffentlichungen:

Teil 1 ; Installation von Paketen

Teil 2 ; MariaDB-Konfiguration

Teil 3 ; Dovecot-Konfiguration

Postfix ist der wichtigste Teil unseres E-Mail-Servers. Er ist für das Gespräch mit anderen MTAs verantwortlich, damit er E-Mail-Nachrichten empfangen und senden kann, und damit diese kontaktiert werden können, ist es notwendig, dass sie über den Servernamen oder Hostname.



Lesen Sie weiter >>

Servidor de Email –; Teil 3 ; Taubenschlag

Dies ist der dritte Teil des Prozesses der Erstellung des Mail-Servers auf einem CentOS 8. Wenn Sie durch Zufall hierher gekommen, Lesen Sie zuerst die vorherigen Publikationen

Teil 1 ; Installation von Paketen

Teil 2 ; Konfigurieren von MariaDB

Dovecot ist ein MDA (Mail Delivery Agent) Das ist ein Mittel, das Nachrichten von Postfix an virtuellen Meldungsfelder trägt. In diesem Abschnitt konfigurieren wir die Dovecot-Installation zu zwingen Sie Benutzer, SSL zu verwenden, wenn sie eine Verbindung herstellen, auf diese Weise niemals Passwörter im Klartext-Modus senden.

Ich habe gerne immer die originalen-Dateien von jeder Definition für zu halten, wenn ich am Ende immer die Einstellungen verloren. Ich kann sagen, dass dieser Schritt nicht erforderlich ist, wenn Sie dieses Tutorial vollständig durchführen, Jedoch, Wenn Sie bereits eine vorherige Konfiguration und es nur benutzt, um es zu verbessern empfehle ich Sie Kopien Ihrer Dateien erstellen.

In unserem Fall, die Konfigurationsdateien werden im /etc/dovecot/CONF.d/. Wir machen dann die Kopie mit dem Befehl:



Lesen Sie weiter >>

Servidor de Email –; Teil 2 ; MariaDB

Dies ist der zweite Teil des Prozesses der Erstellung des Mail-Servers in einem CentOS 8. Wenn Sie durch Zufall hierher gekommen, besser lesen Sie den vorherigen Beitrag zuerst auf der Installation von Paketen

Warum MariaDB/MySQL verwenden?

Zuallererst muss ich klarstellen, dass ich es vorziehe, PostgreSQL zum Nachteil von MariaDB/MySQL aus vielen Gründen zu verwenden., Jedoch, Es gibt eine, die schwer gegen die Verwendung von PostgreSQL auf einem einheitlichen Server mit WordPress und E-Mail-Dienste wiegt, was die einfache Tatsache ist, dass WP keine native Unterstützung für PostgreSQL hat. Weitere Informationen hierzu finden Sie in der offiziellen WordPress-Dokumentation in diesem Link. Wie ich auf persönlichen Erfahrungen, um dieses Dokument zu schreiben und auch für kleine Dienstleistungen, ich verwende, was häufiger und erschwinglicher ist. Wenn die Verwendung von PostgreSQL für Sie von Interesse ist, Sie können dieses Dokument später lesen, wo ich Ihnen zeigen werde, wie Sie von MariaDB zu PostgreSQL migrieren.

Konfigurieren von MariaDB/MySQL

Angenommen, Sie folgen in den Fußstapfen dieses Handbuchs, Sie haben eine MariaDB-Installation noch nicht konfiguriert. Wenn Sie bereits über eine funktionale Installation verfügen, kann zum nächster Schritt.



Lesen Sie weiter >>

DataTables + HTML 5 Export-Buttons + Laravel-Mix (Webpack)

In den letzten Tagen, Ich habe ein Problem versucht, verwenden Sie erlebt. DataTables und Bootstrap 4 mit Unterstützung für den Export der Ergebnisse Excel und PDF-DATEI mit Hilfe Laravel-Mix. Nach Stunden und Stunden damit, alle Skripte zur Zusammenarbeit zu setzen, Ich Gewinne schließlich. Also, Ich beschließe, dieses kleine schreiben So wird es gemacht für diejenigen mit derselben Art von Schwierigkeiten.



Lesen Sie weiter >>

J5 Links

Hier sind einige nützliche Links zu Handy Samsung J5.

Google-Konto Überprüfung Bypass