Regras Validação Contribuinte (NIF) ASP + JavaScript

A 31 de Janeiro de 2009, categoria ASP, JavaScript, por Carlos Gonçalves
0

É normal, diversos sites terem requisitos de introdução do Número de Contribuinte.
Mas o que nem toda a gente sabe, é como se procede à sua validação.
Em um dos trabalhos que já efectuei, tive de pesquisar sobre isso, entrei em contacto com o IIES o qual me facultou o algoritmo para a sua verificação. Podes consultar aqui a descrição do algoritmo em PDF.

A regra geral da validação é:

  1. O NIF tem que ter 9 dígitos
  2. O primeiro dígito tem que ser 1, 2, 5, 6, 8 ou 9
  3. A soma de controle dada por 9xd1+8xd2+7xd3+6xd4+5xd5+4xd6+3xd7+2xd8+d9 tem que ser múltipla de 11 (congruente com o módulo 11, isto é, dê resto 0 quando dividida por 11). d1 é o dígito mais à esquerda, e d9 o digito mais à direita (digito de controle).
  4. d9, em alguns casos, precisava de ter o valor 10, para que a soma de controle fosse divisível por 11. Neste caso d9 tomará o valor 0. Nitidamente uma decisão mal tomada, pois um dígito de controle igual a zero, poderá significar uma soma de controle correcta ou uma cujo resto da divisão por onze dá 1. O dígito de controle deveria ser, por exemplo, uma letra com os 11 possíveis valores de A a K. Por curiosidade, o mesmo erro, existe na validação dos BI.

Agora o código em ASP:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Validação do NIF</title>

    <script src="valida.js" type="text/javascript"></script>

</head>
<body>
<form id="form1" runat="server">
<div>
        <asp :Label ID="Label1" runat="server" Text="Nº de Contribuinte:"></asp>
        <asp :TextBox ID="txtNIF" runat="server"></asp>
        <asp :RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtNIF"
            Display="Dynamic" ErrorMessage="Tem de preencher o nº de Contribuinte." ValidationGroup="NIF"
            Enabled="False">*</asp>
        <asp :CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="ValidateNIF"
            ControlToValidate="txtNIF" Display="Dynamic" ErrorMessage="Número de Contribuinte Inválido."
            ValidationGroup="NIF">*</asp>
    </div>

    <asp :Button ID="Button1" runat="server" Text="Enviar" ValidationGroup="NIF" />

    <asp :ValidationSummary ID="ValidationSummary1" runat="server" ValidationGroup="NIF" />
    </form>

</body>
</html>

Agora com recurso ao JavaScript, validamos o NIF:

function ValidateNIF(sender, args)
{
    args.IsValid = IsValidNIF(args.Value);
}

function IsValidNIF(nif)
{
    var c;
    var checkDigit = 0;

    //Verifica se é nulo, se é numérico e se tem 9 dígitos
    if(nif != null && IsNumeric(nif) && nif.length == 9)
    {
        //Obtem o primeiro número do NIF
        c = nif.charAt(0);

        //Verifica se o primeiro número é (1, 2, 5, 6, 8 ou 9)
        if(c == '1' || c == '2' || c == '5' || c == '6' || c == '8' || c == '9')
        {
            //Calculo do Digito de Controle
            checkDigit = c * 9;
            var i = 0;
            for(i = 2; i < = 8; i++)
            {
                checkDigit += nif.charAt(i-1) * (10-i);
            }
            checkDigit = 11 - (checkDigit % 11);

            //Se o digito de controle é maior que dez, coloca-o a zero
            if(checkDigit >= 10)
                checkDigit = 0;

            //Compara o digito de controle com o último numero do NIF
            //Se igual, o NIF é válido.
            if(checkDigit == nif.charAt(8))
                return true;
        }
    }
    return false;
}

function IsNumeric(ObjVal)
{
return /^\d+$/.test(ObjVal);
}

Muito FracoFracoRazoávelBomMuito Bom (5 votos, média: 5,00 num total de 5)
Loading ... Loading ...
Tags:
 

Upload Básico de Ficheiros com PHP

A 30 de Janeiro de 2009, categoria PHP, por Carlos Gonçalves
0

Já criei diversas aplicações que permitiam aos administradores enviar ficheiros para o próprio site.
Uma vez que permitir a personalização dos utilizadores sobre este assunto, tornou-se cada vez mais e mais importante, pensei em mostrar como é fácil utilizar o upload de ficheiros com PHP.

Formulário XHTML

<form action="upload-ficheiro.php" enctype="multipart/form-data" method="post">
	Imagem:
<input name="imagem" size="25" type="file" />
<input name="submit" type="submit" value="Enviar" />
</form>

Vais precisar de utilizar o valor “multipart/form-data” para a propriedade “enctype” no formulário.
E obviamente, vais precisar também de pelo menos um campo para o input do tipo de ficheiro.
A acção (action) do formulário, deve chamar o ficheiro que contém o código abaixo:

//Se for feito, enviar ficheiro...
if($_FILES['imagem']['nome'])
{
	//Se não ocorrer erros...
	if(!$_FILES['imagem']['error'])
	{
		//Agora é tempo de modificar-mos o nome do ficheiro e de o validar-mos
		$novo_nome = strtolower($_FILES['imagem']['nome_temporario']); //renomeia o ficheiro
		if($_FILES['imagem']['tamanho'] > (1024000)) //Não pode ser maior que 1 MB
		{
			$ficheiro_valido = false;
			$mensagem= 'Oops!  Ficheiro demasiado grande.';
		}

		//Se o ficheiro passar o teste
		if($ficheiro_valido)
		{
			//Mover o ficheiro para onde queremos que ele fique
			mover_ficheiro_para($_FILES['imagem']['nome_temporario'], 'uploads/'.$novo_nome);
			$mensagem= 'Parabens! Ficheiro aceite.';
		}
	}
	//Se ocorrer um erro...
	else
	{
		$mensagem= 'Ooops! O teu upload provocou o seguinte erro:  '.$_FILES['imagem']['error'];
	}
}

//you get the following information for each file:
$_FILES['field_name']['nome']
$_FILES['field_name']['tamanho']
$_FILES['field_name']['type']
$_FILES['field_name']['nome_temporario']

Os comentários no código acima, descreve a forma como o processo funciona, vou agora, apenas mencionar algumas notas sobre o upload em PHP:

  • Muitos servidores de hospedagem compartilhada permitem um tamanho máximo muito baixo para o ficheiro a enviar. Se pretendemos permitir ficheiros maiores, devemos considerar um servidor dedicado ou virtual.
  • Para ajustar-mos o tamanho do ficheiro a enviar, modificamos o valor da variável “upload_max_filesize” do ficheiro php.ini. Também podemos ajustar esse valor, utilizando a função ini_set() do PHP.
  • Certifica-te de fazer diversas validações do ficheiro, quando for permitido aos utilizadores fazerem upload de ficheiros.

    Porquê?

    Permitir que um utilizador consiga enviar um ficheiro .php para o servidor, é algo que não é aconselhável.


Muito FracoFracoRazoávelBomMuito Bom (1 votos, média: 5,00 num total de 5)
Loading ... Loading ...
Tags:
 

Enviar ficheiros entre FTP’s, utilizando PHP

A 30 de Janeiro de 2009, categoria FTP, PHP, por Carlos Gonçalves
0

Enviar ficheiros para o servidor por FTP é um requisito essencial de qualquer programador ou web designer.

Evidentemente, todos nós utilizamos bons clientes FTP, como o Ws_ftp e FireFTP, mas e quanto à automatização do FTP?

Podemos usar PHP para enviar ficheiros utilizando FTP de um servidor para outro.
Vou mostrar como:

$conexao= ftp_connect($server);

$login = ftp_login($conexao, $ftp_utilizador, $ftp_password);

if (!$conexao|| !$login) { die('Tentativa de Conexão Falhada!'); }

$upload = ftp_put($conexao, $dest, $source, $mode);

if (!$upload) { echo 'Upload para o FTP Falhou!'; }

ftp_close($conexao);

Obviamente, a primeira etapa, é a de conectar com o outro servidor.
Assim que a ligação é criada, passamos as informações necessárias para o login, como o utilizador e a password.
Quando estiver conectado, usamos o ftp_put(), que é a função responsável para enviar o ficheiros. Apenas isto!

Com que finalidade usamos isto?

Podes simplesmente criar um cron para criar um backup de ficheiros e enviar para um servidor externo.


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Procuras alguma coisa?

Utiliza o formulário abaixo para pesquisares no meu site:


Ainda não encontraste o que procuravas? Deixa um comentário num post ou contacta-me para que te possa ajudar!

Links de Interesse!

Links por mim recomendados...

Arquivos

Ordenado de forma cronológica...