Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ErickCristiano

Sistema Simples Captcha com JS

Recommended Posts

Boa noite galera, sou iniciante em PHP e JavaScript. Estou criando um formulário em um site e gostaria que ele só fosse enviado se o usuário entrasse com o valor correto de uma soma gerada aleatoriamente entre dois números de 1 à 20 (php).

Porém, não estou conseguindo validá-lo (javascript).

 

<script type="text/javascript">
function Validar(Formulario){
if(FormLivro.captcha.value == '$soma'){
return true;
}
alert("Soma Errada!");
return false;
}
</script>


<?php
session_start();
$n1 = rand(1,20);
$n2 = rand(1,20);
$soma = $n1+$n2;
$_SESSION['captcha'] = $n1+$n2;
?>

 

<form method="post" name="Formulario" >

 

<div>Some: <?php echo "$n1 + $n2 = "; ?></div>

<input type="text" name="captcha" id="captcha" maxlength="2" required="required" size="2">

<input type="submit" onclick="return Validar()" name="Enviar" value="Enviar" id="Enviar" />

 

</form>

 

Como posso fazer para que ao clicar no botão para Enviar, seja reconhecido o valor que o usuário inseriu no campo (captcha) e verifique se este valor é igual à soma dos dois números que foram exibidos aleatoriamente e só assim envie o formulário? Senão, dê um alerta para refazer o cáculo? Alguém saberia dizer como deixar o script acima correto?

 

Desde já, valeu galera..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara reinvente a roda!(ou continue com sua vida normal,e nao seja ninguem na vida!!) continue ultilizando esse captcha,para fazer esse esquema voce ira necessitar de usar javascript! mas me diga quando clicar em enviar,o formulario será enviado sem refresh(atualizar) na pagina ou com refresh(atualizar) na pagina?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara reinvente a roda!(ou continue com sua vida normal,e nao seja ninguem na vida!!) continue ultilizando esse captcha,para fazer esse esquema voce ira necessitar de usar javascript! mas me diga quando clicar em enviar,o formulario será enviado sem refresh(atualizar) na pagina ou com refresh(atualizar) na pagina?

Obrigado meu jovem! Bom, eu nem discuti o 'não reinvente' pois, mesmo sendo iniciante, sei que o príncipio básico é CRIAR! Enfim, eu gostaria com refresh sim, eu já tentei implementar um esquema com o windows.location em javascript, mas ele num retorna na página, e não sei o porque. Mas o objetivo é enviar o form, apenas se este campo estiver correto conforme a soma já dita e assim que estiver correto, ele envie, dê uma mensagem de enviado, e atualize a página, zerando o formulário. Desde já, OBRIGADO CARA!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui esta o codigo amigão:

 

<?php
session_start();

$n1 = rand(1,20);
$n2 = rand(1,20);
$soma = $n1+$n2;
$_SESSION['captcha'] = $n1+$n2;

?>
<script type="text/javascript">
    function Validar(){
    var soma = "<?php echo $soma; ?>";
	var campo = document.getElementById("captcha").value;
	if(campo == soma){
	alert("correto");
	}else{
	alert("incorreto");
	}
	
        }
</script>


 
<form method="post" name="Formulario" >
 
<div>Some: <?php echo "$n1 + $n2 = "; ?></div>
<input type="text" name="captcha" id="captcha" maxlength="2" required="required" size="2">
<input type="submit" onclick="Validar()" name="Enviar" value="Enviar" id="Enviar" />
 
</form>

 

 

Aproveitando vou deixar umas coisa beem claras! pois bem

 

 

 

1-O comando session_start() ,devera vir antes de qualquer comando existente no seu projeto,ate mesmo antes de um espaço ou quebra de linha! dessa forma:

 

<?php
session_start();
?>

 

2- "$_SESSION['captcha'] = $n1+$n2;" nao sei qual a sua verdadeira ideia mas o javascript nao consegue reconheçer sessions somente cookies! pois sessions sao do lado do servidor e javascript é do lado do cliente,exceto cookies que podem ser manipulados tanto do lado do servidor quanto do cliente:

 

3-

 

 if(FormLivro.captcha.value == '$soma'){
          return true;  
        }
        alert("Soma Errada!");
          return false;

 

O javascript esta retornando true e false ao mesmo tempo! mas porque? eu nao sei se voce sabe mas mesmo ali estando o if ele nao para dentro dele! ele executa o if e depois faz o restante! portante se no caso aquele alerta de soma errada nao era para apareçer entao coloque dentro de um else(eu fiz isso no comando que postei acima)

 

 

O Captcha acima é um sistema QUEBRAVEL! (100% quebravel)

 

 

 

por ambos motivos!

 

1-Existem programas que conseguem somar

2-Existem comando que conseguem infiltrar-se no html ou javascript da sua pagina e pegar a soma,pois a soma esta sendo enviada para o javascript! (nao é necessario hackear! se voco estiver noo googlr chrome clique com botao direito do mouse e va em "inspecionar elemento")

 

a minha sugestao é a seguinte(50% quebravel)

 

1-Que voce envie a soma para um arquivo php e lá mesmo faça a comparação e retorne para o javascript(sem refresh) e ai sim o javascript da um refresh!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara reinvente a roda!(ou continue com sua vida normal,e nao seja ninguem na vida!!) continue ultilizando esse captcha,para fazer esse esquema voce ira necessitar de usar javascript! mas me diga quando clicar em enviar,o formulario será enviado sem refresh(atualizar) na pagina ou com refresh(atualizar) na pagina?

 

Na realidade continue assim, fazendo estes "captchas" sem nível de segurança mesmo, pra qualquer otário com um mínimo de conhecimento entrar no seu site ou sistema, e quebrá-lo sem esforço algum, e fazer o valor do seu tempo dispendido, ser reduzido à nada.

 

A grande diferença do seu captcha para o Google, é que o do Google dá um pouquinho de trabalho para quebrar!

 

As pessoas confundem "motivação de aprendizado", com : "Continue perdendo seu pouco tempo com o que não importa, e um dia você aprende e chega lá".

 

Visionários do século XXI.

 

E outra coisa, programador não cria nada, só desenvolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade continue assim, fazendo estes "captchas" sem nível de segurança mesmo, pra qualquer otário com um mínimo de conhecimento entrar no seu site ou sistema, e quebrá-lo sem esforço algum, e fazer o valor do seu tempo dispendido, ser reduzido à nada.

 

E claro que o meu captcha que desenvolvi nao é tããão segura assim quanto ao GOOGLE,mas pensando bem porque nao ajudar o rapaz a desenvolver seu proprio captcha com um nivel maior de segurança? estamos aqui para aprender e compartilhar conhecimento! mas ai voce me pergunta:

 

 

Pra que se ja tem o do google? pra que reinventar a roda? programador não cria nada, só desenvolve?

 

 

Cara é o seguinte,meu pensamento vai totalmente contra ao que foi proposto aqui,isso que voce acabou de dizer pra min é a mesma coisa que dizer!

 

 

Pra que a calculadora foi inventado se o ábaco ja fazia isso?

 

é claro que a sua ideia esta certa e temos que saber quando "reiventar a roda",tambem nao adianta fazer um ábaco com ossos!

 

Mas uma coisa que nao concordo é: "Como se fazer um captcha seguro?" ->(resposta) -> "use captcha ja prontos use do google".

Bem falando serio,uma coisa que me incomoda é ficar a merçe de outros,ou seja para seu site funcionar é necessario que o site do google funcione para assim gerar o captcha(voce nao fica com TODO O CREDITO)..em outras palavras voce aceita as mudanças e tem outras pessoas que fazem as mudanças,cabe a voce se localizar aonde quer ficar,se voce nao faz as mudanças voce nunca sera como "google" assim por dizer...

 

Então minha conclusão é:

 

1-Ou vc ultilza meu captcha simples

2-ou ultiliza o captcha do google

3-Ou voce inova esses sistemas de segurança e cria uma coisa melhor!(Necessario conhecimentos avançados/pos-intermediario em PHP)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade continue assim, fazendo estes "captchas" sem nível de segurança mesmo, pra qualquer otário com um mínimo de conhecimento entrar no seu site ou sistema, e quebrá-lo sem esforço algum, e fazer o valor do seu tempo dispendido, ser reduzido à nada.

 

A grande diferença do seu captcha para o Google, é que o do Google dá um pouquinho de trabalho para quebrar!

 

As pessoas confundem "motivação de aprendizado", com : "Continue perdendo seu pouco tempo com o que não importa, e um dia você aprende e chega lá".

 

Visionários do século XXI.

 

E outra coisa, programador não cria nada, só desenvolve.

Meu Deus... Why Mr. Anderson, why?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ErickCristiano não há mal nenhum em você desenvolver seu próprio sistema de captcha, mas enquanto você não tiver nada muito seguro, ou que ainda precise passar por vários teste. Não existe problema nenhum em você utilizar uma solução já pronta. Isso não vai impedir você de desenvolver seu próprio captcha a parte, e testá-lo muito bem, para depois utilizá-lo em seu sistema.

 

Exemplos de captcha em php não faltam, procure no google e encontrará vários exemplos, desde tutoriais simples, até soluções completas prontas para download.

 

E pessoas como Raphael Barros sempre haverão. É muito importante tentar fazer algo do zero, quando você está aprendendo algo. Você irá aprender muita coisa!

Compartilhar este post


Link para o post
Compartilhar em outros sites

E claro que o meu captcha que desenvolvi nao é tããão segura assim quanto ao GOOGLE,mas pensando bem porque nao ajudar o rapaz a desenvolver seu proprio captcha com um nivel maior de segurança? estamos aqui para aprender e compartilhar conhecimento! mas ai voce me pergunta:

 

 

 

 

Cara é o seguinte,meu pensamento vai totalmente contra ao que foi proposto aqui,isso que voce acabou de dizer pra min é a mesma coisa que dizer!

 

 

 

é claro que a sua ideia esta certa e temos que saber quando "reiventar a roda",tambem nao adianta fazer um ábaco com ossos!

 

Mas uma coisa que nao concordo é: "Como se fazer um captcha seguro?" ->(resposta) -> "use captcha ja prontos use do google".

Bem falando serio,uma coisa que me incomoda é ficar a merçe de outros,ou seja para seu site funcionar é necessario que o site do google funcione para assim gerar o captcha(voce nao fica com TODO O CREDITO)..em outras palavras voce aceita as mudanças e tem outras pessoas que fazem as mudanças,cabe a voce se localizar aonde quer ficar,se voce nao faz as mudanças voce nunca sera como "google" assim por dizer...

 

Então minha conclusão é:

 

1-Ou vc ultilza meu captcha simples

2-ou ultiliza o captcha do google

3-Ou voce inova esses sistemas de segurança e cria uma coisa melhor!(Necessario conhecimentos avançados/pos-intermediario em PHP)

 

O código feito nem se compara com uma evolução de ábaco para calculadora, muito menos de uma calculadora para um outro tipo de calculadora.

 

Quando eu propus para que ele usasse o do Google, e não fizesse um captcha do zero, foram consideradas as seguintes questões:

 

1 - Pelo fato do autor do tópico possivelmente não conhecer o reCaptcha do Google;

 

2 - Usando um fórum da internet pra desenvolver captcha demonstra falta de conhecimento no mínimo no entendimento dos requisitos que um captcha necessita, tais como criptografia, uso das chaves públicas e privada para validar, uso de biblioteca gráfica da linguagem usada, que você não comentou no seu post para ele transformar a equação em imagem, sessão e tempo de expiração deste captcha em um servidor (não vi nada disso no seu código)...

Enfim poderia colocar aqui mais um monte de justificativas que colocam a ineficiência de desenvolver um captcha mediante à um fórum;

 

 

Faz o seguinte, levante uma pesquisa de mercado pra saber, um dos motivos de o programador PHP ganha menos que outros em linguagens como Java, C#...

 

Levante também, porque que surgem novas tecnologias para estas mesmas linguagens citadas acima, o pro PHP não.

 

Te garanto que os desenvolvedores desta linguagem não perdem tempo transformando calculadora em ábaco, Rasmus Lerdorf do Futuro.

 

OBS: Seu código não é nada seguro, de pouco seguro pra nada tem uma infinidade de possibilidades.

O tempo que você perdeu escrevendo estes posts, poderia ter investido em estudar um pouco mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok vamos lá outra vez:

 

 

O código feito nem se compara com uma evolução de ábaco para calculadora, muito menos de uma calculadora para um outro tipo de calculadora.

 

é claro,isso foi somente uma suposiçao.

 

 

Quando eu propus para que ele usasse o do Google, e não fizesse um captcha do zero, foram consideradas as seguintes questões:

1 - Pelo fato do autor do tópico possivelmente não conhecer o reCaptcha do Google;

 

Sim é sempre bom mostrar ao usuario alternativas diferentes de se chegar aos resultados.

 

 

2 - Usando um fórum da internet pra desenvolver captcha demonstra falta de conhecimento no mínimo no entendimento dos requisitos que um captcha necessita, tais como....

 

é claro que demonstra falta de conhecimento porque se nao fosse ele nao iria estar postando aqui,e se perceber no caso eu dei auxilo para a continuaçao de seu proprio codigo,no seu caso ate agora voce somente mostrou um link ao rapaz e disse "Este é o caminho,agora se vire ai!".

 

 

tais como criptografia, uso das chaves públicas e privada para validar, uso de biblioteca gráfica da linguagem usada, que você não comentou no seu post para ele transformar a equação em imagem, sessão e tempo de expiração deste captcha em um servidor

 

Sim correto!,mas a forma que voce inseriu esse texto da uma impressão,de que tudo isso é um bicho de 7 cabeças,e assim talvez fazendo o usuario a desistir deste topico,porque envez de ficar somente citando coisas,pq nao ajuda o rapaz com todas estas justificativas acima,envez de ficar criando novos obstaculos?,pq se for fazer assim ai mesmo que ele nao ira conseguir reproduzir um captcha sozinho!

e nao so ele tambem aos outros que vierem a visitar este topico pelo google ou etc..

 

(não vi nada disso no seu código)...

 

é claro,pois no caso apresentei um sistema simples de "SOMA" que o garoto estava procurando! assim dando a soluçao para o problema! lembre-se o objetivo dele é com numeros e nao com captcha!

 

 

seu código não é nada seguro, de pouco seguro pra nada tem uma infinidade de possibilidades.

 

Sim disso devo concordar.

 

 

E pessoas como Raphael Barros sempre haverão. É muito importante tentar fazer algo do zero, quando você está aprendendo algo. Você irá aprender muita coisa!

 

tambem concordo,uma vez que ele disse "sou iniciante em PHP e JavaScript" portanto: @Raphael Barros toma uma liçao de vida ai!

 

ok @ErickCristiano caso deseja alguma ajuda estamos aptos a lhe ajudar! cabe a voce escolher! abraços

 

 

O tempo que você perdeu escrevendo estes posts, poderia ter investido em estudar um pouco mais.

 

Resposta: o tempo em que voce ficou criando obstaculos porque nao tentou resolver o problema do rapaz e assim ganhar +1 e ter o topico resolvido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok vamos lá outra vez:

 

 

 

é claro,isso foi somente uma suposiçao.

 

 

 

Sim é sempre bom mostrar ao usuario alternativas diferentes de se chegar aos resultados.

 

 

 

é claro que demonstra falta de conhecimento porque se nao fosse ele nao iria estar postando aqui,e se perceber no caso eu dei auxilo para a continuaçao de seu proprio codigo,no seu caso ate agora voce somente mostrou um link ao rapaz e disse "Este é o caminho,agora se vire ai!".

 

 

 

Sim correto!,mas a forma que voce inseriu esse texto da uma impressão,de que tudo isso é um bicho de 7 cabeças,e assim talvez fazendo o usuario a desistir deste topico,porque envez de ficar somente citando coisas,pq nao ajuda o rapaz com todas estas justificativas acima,envez de ficar criando novos obstaculos?,pq se for fazer assim ai mesmo que ele nao ira conseguir reproduzir um captcha sozinho!

e nao so ele tambem aos outros que vierem a visitar este topico pelo google ou etc..

 

 

é claro,pois no caso apresentei um sistema simples de "SOMA" que o garoto estava procurando! assim dando a soluçao para o problema! lembre-se o objetivo dele é com numeros e nao com captcha!

 

 

 

Sim disso devo concordar.

 

 

 

tambem concordo portanto: @Raphael Barros toma uma liçao de vida ai!

 

ok @ErickCristiano caso deseja alguma ajuda estamos aptos a lhe ajudar! cabe a voce escolher! abraços

 

1 - Em momento algum eu coloquei as tecnologias usadas como bicho de 7 cabeças, simplesmente citei-as para que não passasse em branco, pois são necessárias para se fazer um captcha decente. Se você ou outro aqui que leu este post encarou como tal, deve rever seus conceitos e procurar saber mais sobre estes assuntos. Quando eu era menino achava muita coisa como bicho de 7 cabeças, mas por não ter conhecimento nem domínio sobre tais coisas.

 

2 - Não ajudei no desenvolvimento por achar extremamente desnecessário. Pensei em estar ajudando simplesmente indicando para ele uma referência melhor "link do reCaptcha". Agora eu estou lhe respondendo mais do que à ele neste post pois o infeliz foi você com seu comentário "Cara reinvente a roda!(ou continue com sua vida normal,e nao seja ninguem na vida!!)". Primeiro, vc não me conhece, não sabe quem sou nem onde trabalho, nem pra quem trabalho, o autor do tópico mesmo não ficou com o seu comportamento infantil.

 

3 - Faz o seguinte dá uma olhada no meu conteúdo, e veja quais foram os tipos de problemas que ajudei a solucionar, e depois você compara com os tipos que você ajudou. Avalie e veja se eu não tenho know-how pra fazer o que você está propondo aqui com "porque envez de ficar somente citando coisas,pq nao ajuda o rapaz com todas estas justificativas acima,envez de ficar criando novos obstaculos?,pq se for fazer assim ai mesmo que ele nao ira conseguir reproduzir um captcha sozinho!"

Se tu consideras o que eu citei como obstáculo, me desculpe, eu considero como requisitos.

 

4 - Eu li uma vez que um determinado aluno fazia um curso com um professor que dizia que seus trabalhos iniciais não eram bons, e que ele devia amassar, jogar fora e começar do zero, e que com o tempo, este mesmo professor não indicava mais que este aluno jogasse fora seus trabalhos, mas que passasse a borracha nas partes erradas do trabalho proposto, devido a evolução do aluno. Tomando como base este cenário, eu não passei a borracha neste código, eu preferi amassá-lo e jogá-lo fora, e propus começar um novo com o reCaptcha.

 

E chega desta palhaçada que a cada post que eu tenho que lhe responder, eu deixo de realmente sanar dúvidas pertinentes de outros que querem realmente entender.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bem @Raphael Barros esperava que neste ultimo topico nos mostrasse o seu famoso know-how ,esperava que voce tinha seguido o meu ultimo conselho que era: " nao tentou resolver o problema do rapaz e assim ganhar +1 e ter o topico resolvido?"

 

Pois bem,apartir de agora decidi que vou explicar um tutorial abrangendo varios tipos de captcha!

 

Antes de mais nada,voce sabe o que é um CAPTCHA?

 

É um teste de desafio cognitivo,ultilizado como ferramenta anti-spam,fazendo assim que usuarios mal intencionados nao abusem do website por metodos de força bruta ou bot's

 

Mas eu nao entendi direito? o que são bot's?

 

Bot vem do ingles cujo significado é uma abrevição de robo, é um programa que funciona como um agente para um usuário ou outro programa ou simula uma atividade humana.

 

ok,vamos para de papo e construir logo o nosso primeiro captcha,nesse topico estarei abordando 2 tipos diferentes de captcha que são:

 

  1. Criado por voce mesmo!
  2. Recaptcha (muito ultilizado pelos sistemas a fora)

 

Ao final deste topico voce será capaz de:

 

  • Compreender como funciona elementos randomicos
  • Dificultar a visualização de elementos
  • Ultilizar puzzles para confundir o BOT
  • Integrar o RECAPTCH ao seu sistema
  • Conheçer novos tipos de captcha

 

1- Criando seu proprio sistema de captcha

 

REQUESITOS: (possuir um servidor apache! tanto localmente ou online)

 

Pois bem a primeira coisa que iremos fazer é,criar uma pasta no seu servidor local cuja o nome será captcha ,apartir de agora iremos criar um novo arquivo .php dentro dessa pasta! o arquivo será chamado de index.php:

 

Dentro do index nos precisaremos inserir um formulario aonde ira conter:

 

  1. Imagem do captcha
  2. Campo para digitar o captcha
  3. Botão para verificação

 

que no caso iremos fazer da seguinte forma:

 

<form id="formulario" name="formulario" method="post" action="index.php">// INICIO DO FORMULARIO
<td>Insira o que voce vê na imagem</td>//TEXTO QUALQUER
<input name="campo" type="text" id="campo" size="9" />// CAMPO DE DIGITAÇÃO
<input type="submit" name="button" id="button" value="Submit" /> //BOTAO PARA ENVIAR FORMULARIO
</form>//FINAL DO FORMULARIO

 

Agora vem a parte aonde iremos inserir a nossa imagem do captcha,para isso devemos criar um novo arquivo .php que dessa vez se chamara captcha.php, dentro dele nos iremos inserir toda a estrutura que irá fazer:

 

  1. Definir o tamanho das letras do captcha,largura e o altura
  2. Gerar valores randomicos
  3. Escolher a fonte que sera ultilizada

 

A primeira coisa que iremos fazer é inserir um header que alegara que tal arquivo .php nada mais sera que uma imagem : que é:

 

header('Content-type: images/jpeg');

 

A segunda coisa que iremos fazer é,iniciar uma session,definir uma variavel para ela e atribuir valores iniciais ao nosso captcha:

 

session_start(); // inica uma session
$number = $_SESSION['captcha_numerico']; // armazena na variavel captcha a sessions captcha_numerico
$tamanho_da_fonte = 25;// define o tamanho da fonte que no caso sera 30 pixels
$largura = 180; // define a largura da fonte que sera 180 pixels
$altura = 50;// define a altura da fonte que sera 50 pixels

 

Lembrando que os valores acima poderão ser alterados a escolha de cada usuario ao seu favor

 

3° coisa é definir o tamanho da imagem e as cores(lembrando que dessa vez é o tamanho da imagem nao o tamanho da fonte como visto acima),para isso iremos usar 2 comandos novos: que sao:

 

 

imagecreate & imagecolorallocate

 

IMAGECOLORALLOCATE

 

 

retorna um identificador de cor representando a cor composta pelos componentes RGB. Os argumentos image é o retorno da função imagecreate(). red, green and blue são os valores de vermelho, azul e verde, respectivamente da cor solicitada. Estes parâmetros são inteiros entre 0 e 255 ou hexadecimais entre 0x00 e 0xFF. imagecolorallocate() deve ser utilizada para cada cor que será usada na imagem representada por image.

 

IMAGECREATE

 

 

retorna um identificadir de imagem representando uma imagem em branco do tamanho especificado.

 

para mais informações e exemplos sobre ambas funcões acessem:

 

http://www.php.net/manual/pt_BR/function.imagecreate.php

http://php.net/manual/pt_BR/function.imagecolorallocate.php

 

No caso os comandos serão:

 

$imagem = imagecreate($largura, $altura);
imagecolorallocate($image, 255, 255, 255);

vamos aproveitar tambem e definir uma variavel chamada cor e dentro dela armazenar a imagecolorallocate dessa forma:

 

$cor = imagecolorallocate($image, 0, 0, 0);

(futuramente iremos ver para o que na verdade ela irá servir)

 

Agora devemos confundir o bot,ou ate mesmo o ser humano(isso aconteçe as vezes) traçando linhas no nosso captcha deixando ele da seguinte forma:

 

bkh.PNG

 

o codigo que fara esta façanha é o imageline(),mas ele sozinho so consegue traçar uma linha entao qual o comando que usaremos para que ele traça mais de 10 20 30 40 50 ...linhas?

 

uma delas é a estrutura de repetição FOR,que nesse caso iremos usar nesse tutorial.

 

for($i =0; $i < 20; $i++){
} 

A estrutura acima diz para a maquina fazer o seguinte:

 

 

Ei variavel X voce terá valor igual a zero! -> ok micilini roll

variavel X eu declaro que voce nunca sera maior que 20 ok! ->ok micilini roll

Outra coisa!! enquanto voce nao for maior que 20 a cada volta voce sera atribuido +1

Lembre-se que voce nunca podera ser maior que 20 se for PARA DE DAR VOLTAS!!!

 

agora enquanto o nosso amigo X fica dando voltas e mais voltas nao vamos fazer que ele fiça isso a toá ne?? vamos falar pra ele que a cada volta ele faça um risco na imagem! como dito antes o comando que faz isso será o imageline(); mas para que isso funciona teremos que gerar 4 valores randomicos na imagem e depois formar os riscos!

 

Para gerar valores randomicos iremos usar o comando RAND() que pode ser encontrado com mais detalhes por aqui:

http://br2.php.net/manual/pt_BR/function.rand.php

 

for($x =0; $x < 20; $x++){
	$x1 = rand(1, 100);
	$y1 = rand(1, 100);
	$x2 = rand(1, 100);
	$y2 = rand(1, 100);

	imageline($imagem, $x1, $y1, $x2, $y2, $cor);
}

o comando imageline apresenta a seguinte carateristica

 

 

imageline(largura e altura da imagem, valor1,valor2,valor3,valor4,cor da imagem)

 

agora vem os ultimos comandos desta pagina que serão:

 

  1. Comando que desenha os carateres na imagem
  2. Retorna uma imagem do tipo jpeg

 

Novamente serão apresentados a voces 2 novos comandos que sao:

 

 

imagettftext & imagejpeg

 

IMAGETTFTEXT

 

desenha a string text na imagem identificada por image, começando nas coordenadas x, y (o canto superior esquerdo é 0, 0), em um ângulo de angle na cor color, usando o arquivo de fonte TrueType identificado por fontfile. Dependendo de qual versão da biblioteca GD o PHP estiver usando o fontfile não começa com '/', '.ttf' será adicionado ao nome do arquivo e a biblioteca tentará encontrar o nome do arquivo entre o caminho de fonte definido na biblioteca.

 

IMAGEJPEG

 

cria um arquivo JPEG em a partir da image(tal imagem citada a cima)

 

(Já deu pra perceber se voce quiser gerar uma imagem estes 2 codigos devem andar junto lado a lado)

 

dentro do imagettftext iremos definir:

 

 

angle é em graus, sendo 0 graus da esqueda para a direita (direção de 3 horas no relógio), e valores maiores representando um rotação anti-horária. (ex. um valor de 90 irá resultar em um exto de baixo para cima).

fontfile é o caminho para a TrueType que você quer usar.

text é a string com o texto que pode incluir caracteres UTF-8 (na forma de: {) para acessar caracteres na fonte alem do 255.

color é o índice da cor. Usando um índice de cor negativo tem o efeito de desativar o antialiasing.

 

desta forma:

 

imagettftext($imagem, $tamanho_da_fonte, 0, 10, 40, $cor, 'HoboStd.otf', $number);

 

Aparentemente esse codigo nao irá funcionar!! :yes:

 

mas como assim? voce me faz chegar ate aqui pra absolutamente nada?? :pinch:

 

Calma rapaz esta com pressa? o motivo de nao funcionar este codigo é pq ainda nao existe a fonte:

 

 

 

HoboStd.otf

 

e agora? agora ou nos iremos no windows e copiamos a qualquer fonte para dentro da pasta captcha ou iremos no website:

 

http://www.netfontes.com.br/

 

baixamos a fonte e copiamos para dentro da pasta captcha lembrando que o nome da fonte e a extenção deveram ser os mesmo digitados no comando! ou seja:

 

 

fonte com nome "fonte1.ttf" -> no comando a linha "HoboStd.otf" devera ser substituida por "fonte1.ttf"

 

agora vem o nosso comando que irá criar a imagem jpg que sera:

 

imagejpeg($imagem);

 

 

e dai finalizamos o nosso TUTORIAL! éééé mentiraááá hahaha , :coolio: agora que finalizamos o nsso projeto captcha.php iremos retornar para o projeto index.php e dentro dele iremos inserir o comando que ira fazer:

 

  1. inciar uma session
  2. verificar se existe a session criada no captcha.php
  3. pegar o campo vindo do formulario(assim que o botao submit for ativo)
  4. verificar se o campo e o captcha apresentam valores iguais

 

<?PHP
session_start();
if( !isset($_POST['campo']) ){
	$_SESSION['captcha_numerico'] = rand(1000, 9999);	
}else{
	if( $_POST['campo'] == $_SESSION['captcha_numerico'] ){
		echo 'Parabens voce pelo visto nao é um robo,ou um robo inteligente!!!';	
	}else{
		echo 'O captcha este incorreto tente novamente!!!';
		$_SESSION['captcha_numerico'] = rand(1000, 9999);
	}
}
?>

 

 

(sendo que este comando devera ser inserido antes(caso a mensagem apareça em cima) ou depois do formulario )

 

e mesmo assim o captcha nao ira funcionar! kkkk :natallaugh: ,pois esta faltando que dará vida ao nosso sistema! que é o :

 

<img src="captcha.php" />

 

que ira puxar a imagem gerada pelo projeto captcha.php esse comando devera ser inserido em qualquer parte da index!(menos dentro das tags do php) ela pode ser inserida tanto dentro quanto fora do formulario!

 

e por fim finalizamos o nosso captcha! numero

 

 

2- Implementado o recaptcha no seu sistema!

 

vou deixar aqui com voces alguns videos que irão mostrar passo a passo como inserir o recaptcha em seus websites!

 

 

 

 

3- Demos / Download Codigos

 

Vejo que nosso tutorial esta chegando ao fim deixo aqui com voces mais um captcha que leva letras e numeros randomicos:

 

http://x10hosting.com/forums/tutorials/66980-php-tut-make-your-own-captcha.html

 

http://woork.blogspot.com.br/2009/02/10-free-captcha-scripts-and-services.html

 

http://www.script-tutorials.com/top10-really-user-friendly-captchas/

 

DEMO:

 

 

DOWNLOAD:

 

 

 

4- Conclusão

 

Viu quantas coisas voce aprendeu,hoje! vimos como gerar imagem! elementos randomicos,rabiscar imagens,implementar recaptcha entre outros! é isso ai pessoal ate a proxima!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em uma palestra sobre startup, um empresário disse que prefere contratar programadores da Argentina, do que os do Brasil, pois não aguenta mais tanta arrogância dos desenvolvedores nacionais. Este tópico me fez lembrar disso.

 

O que o @Raphael Barros quis dizer foi, se você tem uma ferramenta testada por milhares de pedreiros digitais use-a. hehehe.

 

@Micilini Roll parece que não gosta de ser contrariado, faz de tudo para defender seu ponto de vista.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Micilini Roll parece que não gosta de ser contrariado, faz de tudo para defender seu ponto de vista.

 

Não so o meu Wduarte no caso ensinei a ele a fazer por 2 metodos! tanto no meu ponto de vista quanto no dele! dei enfasê tambem em outros captchas! :innocent:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não so o meu Wduarte no caso ensinei a ele a fazer por 2 metodos! tanto no meu ponto de vista quanto no dele! dei enfasê tambem em outros captchas! :innocent:

 

Tá certo! :coolio:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só assim mesmo para fazer os ignorantes estudarem. Explicou tudinho o que eu disse em poucas palavras, considerada bicho de 7 cabeças. espero que não só tenha ficado no ctrl+c e ctrl+v

 

Duplicou, meu Android se Droga

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só assim mesmo para fazer os ignorantes estudarem.

 

hey man eu nao sou um ignorante kkk

 

 

espero que não só tenha ficado no ctrl+c e ctrl+v

 

claro que nao rsrs

 

eae @Raphael Barros podemos marcar este topico como resolvido!

 

sem recentimentos? haha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu galera, resolveu meu problema sim, todos comentários postados foram de grande utilidade, acreditem, em minhas próximas publicações, serão ajudando desenvolvedores PHP, discutiremos juntos \o/ ... Tenham um ótimo dia e muito obrigado por cederem o tempo de vocês à resolução do meu problema. Abraços e até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.