Ir para conteúdo

POWERED BY:

Arquivado

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

CACA COBRA

Captcha

Recommended Posts

Olá gente, eu fiz meu primeiro capicha e queria que vocês

avaliassem pra mim....você se está seguro e se eu posso melhorar

E tambem compartilhar com a galera.. ;)

 

 

CAPICHA.PHP

<?php
session_start();
function security ($number){ // função que gera a imagem com os valores pro capicha
	$image = ImageCreateFromJPEG("security.jpg") or die ("error");
	$text_color = ImageColorAllocate($image, 255, 20, 20);
	//Header("Content-Type: image/jpeg");
	ImageString ($image, 5, rand(0,60), rand(0,60), $number, $text_color); // 5,<-[tamanho] 60<-[W], 60<-[H],
	ImageJPEG($image, '', 100);
	ImageDestroy($image);
}
$random .= $_SESSION['random'];
security($random);
?>

 

FORM.PHP

<?
session_start();
if (isset($_SESSION['random'])){ //Verifico se a sessão com o valor do capicha existe
	if(isset($_POST['enviar'])){// verifico se o form foi submetido
	   if($_POST['random'] == $_SESSION['random']){ // verifico se o campo ramdom é igual ao valor da sessão
		  echo "dados corretos :)"; //se for igual passa, aqui eu faço as verificaçoes necessárias
		  unset($_SESSION['random']); // e destruo a sessão pois não é mais necessária
		 }else{echo"dados incorretos :P"; // caso contrario retorno a mensagem de erro
		  }
	 }
} else { // se a sessão com o valor do capicha não existir eu crio e registro
		session_register ("random");
		$_SESSION['random'] = mt_rand(1000,9999); // e atribuo um valor randonico
  }
//UNSET($_SESSION['random']); apenas pra teste pode apagar
?>
<style>
img{border:1px solid #ff0000;}
</style>
<br>-----------------<br>
<img src="capicha.php">
<form method="post">
<input type="text" name="random">
<input type="submit" name="enviar">
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

haeuaheuiah como assim ?? nunca vi isso, tem algum site q tenha pra me mostrar ae?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, nada de capicha, é captcha. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

http://pt.wikipedia.org/wiki/Captcha

 

$random está recebendo o valor de $_SESSION['random'], mas essa variável não está sendo criada. De onde vem o código aleatório?

Compartilhar este post


Link para o post
Compartilhar em outros sites

else { // se a sessão com o valor do capicha não existir eu crio e registro

session_register ("random");

$_SESSION['random'] = mt_rand(1000,9999); // e atribuo um valor randonico

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

ops, é mesmo. que desatenção. http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

 

mt_rand() já não é mais usada. session_register() também não. Use rand() e atribua o valor à variável de sessão diretamente:

 

PHP
$_SESSION['var'] = "valor";

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP
<?php

/**

 * CAPTCHA - Alpha Version.

 * Desenvolvido por: Dorian Conde Langbeck

**/

 

//Configurações

$len = 10; //Quantidade de chars no codigo

$fontName = "arial.ttf"; //Nome do arquivo de fonte que sera usado

$fontSize = 20; //Tamanho da fonte

$pad = 10; //Espaçamento extra

$borda = 1; //Espesura da borda

 

 

$char = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9");

$im = imagecreatetruecolor($len*$fontSize + 2*$pad + $fontSize/2, 2*$pad + $fontSize*1.5);

$fundo = imagecolorallocate($im, 255, 255, 255);

$ix = imagesx($im);

$iy = imagesy($im);

imagefilledrectangle($im, $borda, $borda, $ix - 1 - $borda, $iy - 1 - $borda, $fundo);

for ($x = 0; $x < $len; $x++) imagettftext($im,$fontSize,rand(-45,45),$x*$fontSize + $pad + $fontSize/2,$pad+$fontSize,0,$fontName,$char[rand(0,count($char)-1)]);

imagepng($im);

imagedestroy($im);

?>

ta aew!!!

meu primeiro tbm ^^

 

vou tentar implementar as imperfeições do fundo pra melhorar a segurança...

ainda naum revi o codigo... sei q deve ter muitas coisas redundantes ou desnecessarias...

 

Abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP
<?php

/**

 * CAPTCHA - Alpha Version.

 * Desenvolvido por: Dorian Conde Langbeck

**/

 

//Configurações

$len = 10; //Quantidade de chars no codigo

$fontName = "arial.ttf"; //Nome do arquivo de fonte que sera usado

$fontSize = 20; //Tamanho da fonte

$pad = 10; //Espaçamento extra

$borda = 1; //Espesura da borda

 

 

$char = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9");

$im = imagecreatetruecolor($len*$fontSize + 2*$pad + $fontSize/2, 2*$pad + $fontSize*1.5);

$fundo = imagecolorallocate($im, 255, 255, 255);

$ix = imagesx($im);

$iy = imagesy($im);

imagefilledrectangle($im, $borda, $borda, $ix - 1 - $borda, $iy - 1 - $borda, $fundo);

for ($x = 0; $x < $len; $x++) imagettftext($im,$fontSize,rand(-45,45),$x*$fontSize + $pad + $fontSize/2,$pad+$fontSize,0,$fontName,$char[rand(0,count($char)-1)]);

imagepng($im);

imagedestroy($im);

?>

ta aew!!!

meu primeiro tbm ^^

 

vou tentar implementar as imperfeições do fundo pra melhorar a segurança...

ainda naum revi o codigo... sei q deve ter muitas coisas redundantes ou desnecessarias...

 

Abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

aceita sugestoes?

eu removeria as letras que sao semelhantes (exemplo: "0" e "o", ou "l" e "1").evitaria problemas na hora de digitar o que está na imagem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigos, tem como saber se o captcha pode ser burlado, tipo, quero fazer um sistema de envio de sms, porem manualmente é necessario digitar o captcha, tem alguma forma de burlar??

Compartilhar este post


Link para o post
Compartilhar em outros sites

vejam a função range(). Ela cria os arrays com letras e números, sem precisar declarar todos.

 

Marlon Souza. se você fizer uma verificação, não será possível burlar. Seria como validar campos de formulários, se eu entendi bem sua pergunta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu removeria as letras que sao semelhantes (exemplo: "0" e "o", ou "l" e "1").evitaria problemas na hora de digitar o que está na imagem.

vejam a função range(). Ela cria os arrays com letras e números, sem precisar declarar todos.

boas dicas... na proxima versao eu posto na sesao de Dicas e Tutoriais ja com essas modificações...

quero naum apenas saber do codigo... quero saber oq vcs acharam q ficou a execução... o resultado é bom?!

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.