← Desenvolvimento Web

Programador

Lida 17459 vezes

Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Alem do que já foi dito
- Verificar se o username são apenas numeros e letras
Código: [Seleccione]
$username = ereg_replace("[^A-Za-z0-9]", "", $_POST['username']);- Verificar se todos os campos numéricos são numéricos
Código: [Seleccione]
$id = intval($id)- Verificar o tamanho da string introduzida no username
Código: [Seleccione]
$erro .= (srtlen($campo)>10 ? "<br>Tamanho inferior a 10": "")- Efectuar o addslashes() a todos os campos (caso magic_quotes desligado)
Código: [Seleccione]
$variavel = addslashes($variavel) - Verificar o dominio de um email antes de enviar email
Com classe existente para ver se existem MX's no dominio

Entre outras validações básicas na minha opinião.
Offline

Spread 
Membro
Mensagens 1433 Gostos 2
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

LOL conheces alguém que use triggers para validar dados de um formulário via web? quando tens PHP, javascript, ASP, etc...
Então mas é um facto ou não? Não é por não ser comum que não existe...

Cumps 8)
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

é óbvio que quem paga por algum código deve, no mínimo, receber o que pediu de forma decente... não é etico usar a desculpa "aí era com segurança? é mais X euros", "aí era com validação total? é mais X euros", "aí era com sistema de recuperação de password? é mais X euros".... o cliente não tem de perceber de sistemas de logins para encomendar um... faz parte do trabalho do programador, pegar na encomenda e levantar requisitos e através de um pedido abstracto...

Como já disse o termo qualidade é diferente de cliente para cliente, se o cliente não precisa nem quer um sistema de activação via email, e tu lhe fazes um, estás a fazer um trabalho sem qualidade, pois está fora das especificações do cliente.
O levantamento de requisitos deve ser feito e proposto ao cliente, se o cliente disser não, eu só preciso de um form de login e outro de registo, qualidade é o que o cliente te pede.
Quando o fabricante de um produto danificado vende esse produto como uma segunda marca a um cliente com especificações diferentes e o cliente o compra, esse produto têm qualidade a partir do momento em que o cliente tinha pedido um producto danificado.
É obdio não não vamos pôr isto da forma ai o cliente não pediu segurança, não se dá segurança, um código bem estruturado não precisa de ser comprido e ter 1000 linhas de código e 2000 validações para se seguro.


Quanto às validações javascript já percebes-te a logica de não validar unicamente por javascript ? O javascript apenas serve e deve ser usado para evitar o carregamento de uma nova página é tipo uma pré validação, a qual pode ser opcional.
Quanto ao POST do formulário ele pode ser sempre feito atravéz de uma pagina html gravada no nosso computador por isso temos de ter sempre esta atenção, e isso não evitas nem com sessões, nem com referal checks, nem tens maneira de ver no php se o cliente têm o javascript activo ou não.
Offline

spec 
Elite
Mensagens 989 Gostos 1
Feedback +2

Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Spread vamos aplicar uma solução alternativa que é mil vezes menos comum e mais trabalhosa que a solução dita normal? qual é a lógica... só porque é possível?

nrag
o javascript para validar foi apenas uma sugestão, modéstia à parte, sempre que escreves dá a sensação que "queres ensinar o pai a fazer filhos" como se diz cá na terra... LOL eu sei isso tudo

tens o pedido de serviço, faz a tua proposta... se ganhares o trabalho linka-o aqui e depois falamos, não vou estar a bater no ceguinho...




só para teres uma ideia

Código: [Seleccione]
function validar_email($email){
$mail_correcto = 0;
//verifico umas coisas
if((substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
if((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))){
//vejo se tem ponto
if(substr_count($email,".")>= 1){
//obtenho a terminação do dominio
$term_dom = substr(strrchr ($email, '.'),1);
//verifico que a terminação do dominio seja correcta
if(strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
//verifico que o de antes do dominio seja correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if($mail_correcto == 0){
return false;
}
else{
return true;
}
}

o código acima valida o email quanto à forma de escrita e mesmo assim é das funções mais simples para validar mails... tenho por habito criar as funções todas dentro do ficheiro validacoes.php e depois vou chama-las, geralmente na própria pagina tenho outras funções que tratam os outputs destas que informam o user sobre o que correu mal.. o ficheiro de validação mais pequeno que tenho no XAMPP tem 1200 linhas... depois ha o ficheiro mysql.php que tem as querys todas de acesso à BD com métodos GETs e SETs (POO) outro ficheiro com funções que nunca mais acaba... não sei que te diga, se fazes isso em 2 dias e barato, força, tens de falar é com o cliente, boa sorte



existe uma coisa que se chama levantamento de requisitos é uma coisa que vai alem do que o cliente pede, existe requisitos funcionais e requisitos não funcionais, o cliente não precisa de perceber de XPTO para encomendar um XPTO, não precisa de saber que dado trabalho precisa de um qualquer addon, esse é o teu trabalho e tu é que tens de lhe explicar "não posso fazer assim, tenho de fazer assado"...
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Tanta linha para uma validação de mail que se faz em 2 linhas?
http://www.anjo2.com/validate_mail.php?email=qualquer_coisa@omeumail.com
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

o código acima valida o email quanto à forma de escrita e mesmo assim é das funções mais simples para validar mails... tenho por habito criar as funções todas dentro do ficheiro validacoes.php e depois vou chama-las, geralmente na própria pagina tenho outras funções que tratam os outputs destas que informam o user sobre o que correu mal.. o ficheiro de validação mais pequeno que tenho no XAMPP tem 1200 linhas... depois ha o ficheiro mysql.php que tem as querys todas de acesso à BD com métodos GETs e SETs (POO) outro ficheiro com funções que nunca mais acaba... não sei que te diga, se fazes isso em 2 dias e barato, força, tens de falar é com o cliente, boa sorte

Já pensas-te que estás a incluir código desnecessário no site todo, e quando um ficheiro php só valida se o email é correcto estas a incluir 1200 linhas de código desnecessário !

Código: [Seleccione]
<?php
$email 
"ola@dominio.com";
if(
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$email)) {
  echo 
"Valido.";
} else {
  echo 
"Invalido.";
}
?>

Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Não sei se são esses que vocês usam, mas se é devem os testar.

http://www.anjo2.com/validate_mail.php
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

http://fodi.me/validate.php?mail=ola@ola.eu

Apenas uma correcção:
if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) {

para os dominios que os TLD têm 4 letras
N percebi pq que o teu deu inválido para def@n.com
n.com pode ser um dominio


É claro que isto é uma validação básica, poderia-se verificar se o dominio têm MX's para n se correr o risco de aparecerem dominios que não existem com a função checkdnsrr()
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Já agora e como estamos a aprender todos os dias no php > 5
Código: [Seleccione]
<?php
$email 
"teste@ola.com"
if ( filter_var($emailFILTER_VALIDATE_EMAIL)  == TRUE) {
echo 'Valid Email Address';
} else {
echo 'Invalid Email Address';
}
?>

No entanto não testa o MX record do email.

Encontrei isto agora no manual php :-)
Offline

Henrique Mouta 
Equipa
Mensagens 1189 Gostos 3
Troféus totais: 31
Trófeus: (Ver todos)
Level 6 Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3

Hehehe, é engraçado ter trabalho a fazer uma coisa, que no PHP5 já tem uma função :D
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Não pode ter só um carácter o domínio e se não estou em erro nem 2, mas pode existir domínios do tipo co.uk

Adicionei com o filter_var e ele dá como válido o def@n.com, n.com nunca podia ser um domínio

Vaurdan, a função que existe no php5 não te garante todos os resultados certos e o que faz é um preg_match ou algo do género.

Dentro da rede interna podes ter qualquer nome, do estilo "a.a", agora domínios válidos para a internet já não o são.

Eu adicionei mais testes para verem que esse filtro pode não ser a melhor opção.

http://www.anjo2.com/validate_mail.php
Offline

narg 
Membro
Mensagens 265 Gostos 0
Feedback +2

Troféus totais: 27
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Pode-se sempre fazer um
Código: [Seleccione]
<?php
$domain
=split("@",$email);
if(
function_exists("getmxrr") && getmxrr($domain$mxhosts))
{
   return 
true;
}
?>
O que faria com que funciona-se mesmo dentro de domínios lan
Claro que inserindo isto após validação básica do email
Esta função n existe no windows teria de ser utilizado o nslookup
Offline

anjo2 
Membro
Mensagens 3020 Gostos 0
Troféus totais: 31
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

Essa função existe no windows sim, garante que o servidor esteja a receber mails, não garante que ele receba e até pode ser enganador... porque pode não estar a responder num certo momento.