Captcha php

Cosina

Utente Attivo
27 Dic 2016
101
0
16
Ciao a tutti. Ho un form con captcha php. Funziona benissimo, ma vorrei ingrandire un po' i numeri e non so come fare, potete aiutarmi?
Il codice php è questo:
PHP:
<?php

session_start();

$image = imagecreatetruecolor(120, 30);
$background = imagecolorallocate($image, 200, 200, 200);
imagefill($image, 0, 0, $background);

$linesColor = imagecolorallocate($image, 100, 100, 100);
for ($i=1; $i<=5; $i++) {
   imagesetthickness($image, rand(1,2));
   imageline($image, 0, rand(0,30), 120, rand(0,30), $linesColor);
}

$captcha = '';
$textColor = imagecolorallocate($image, 0, 0, 0);
for ($x = 15; $x <= 95; $x += 20) {
    $value = rand(0, 9);
    imagechar($image, rand(3, 5), $x, rand(2, 14), $value, $textColor);

    $captcha .= $value;
}

$_SESSION['captcha'] = $captcha;

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>

Grazie per l'attenzione.
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
437
73
28
Ciao, purtroppo imagechar non permette di impostare una dimensione del testo. Si può certamente risolvere in diversi modi ma penso sia più pratico usare imagettftext come alternativa alla suddetta funzione.
Questa funzione ti permette di impostare una dimensione del testo ma dovrai anche specificare un font (che potrebbe anche essere un vantaggio).
Volendo puoi inserire un font personalizzato. Dovrai prima caricarlo sul server e quindi specificarne il percorso nel relativo parametro di tale funzione.

Puoi usare un carattere che sia sufficientemente distorto ma decifrabile umanamente.

Io ho scaricato questo: https://www.1001fonts.com/the-shaker-font.html
quindi ho creato una cartella fonts dentro la cartella dove sta lo script e ci ho messo dentro quel ttf.

Ho modificato lo script in questo modo:
PHP:
<?php
session_start();

$image = imagecreatetruecolor(120, 30);
$background = imagecolorallocate($image, 200, 200, 200);
imagefill($image, 0, 0, $background);

$font = "/fonts/the-shaker.caps.ttf";
$captcha = '';
for ($i = 0; $i < 5; $i++) {
  $value = rand(0, 9);
  $size = rand(16, 22);
  $angle = rand(-10, 10);
  $x = rand(13, 17) + $i * 20;
  $y = rand(25, 30);
  $color = imagecolorallocate($image, rand(0, 128), rand(0, 128), rand(0, 128));

  imagesetthickness($image, rand(1,2));
  imageline($image, 0, rand(0,30), 120, rand(0,30), $color);

  imagettftext($image, $size, $angle, $x, $y, $color, $font, $value);

  $captcha .= $value;
}

$_SESSION['captcha'] = $captcha;

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
?>
Per $font dovrai quindi specificare il percorso del ttf.

Ho inoltre definito delle variabili dentro il ciclo cosi è più intuitivo capire come puoi eventualmente aggiustare i valori per la funzione che crea il testo. E' possibile infatti applicare una rotazione random, oltre alla posizione x e y.
Anche il colore è random per ciascun carattere.
Inoltre ho inserito, sempre nello stesso ciclo, la parte che crea le linee di disturbo in modo da impostare anche per queste lo stesso colore random così che risultino maggiormente amalgamate col testo.

Chiaramente puoi decidere di usare un diverso font, caricandolo e impostandolo opportunamente per ottenere un risultato che possa andare bene.

Fai qualche prova e fai sapere.
Buon proseguimento.
 
Discussioni simili
Autore Titolo Forum Risposte Data
P PHP - Leggere una pagina passata con Form e Captcha PHP 0
P Problema captcha su pagina php PHP 2
giancadeejay captcha in un form -- php+js PHP 0
E Pagina Cloudflare e captcha Domini 1
C [OFFRO] Click Day - Risoluzione Captcha Offerte e Richieste di Lavoro e/o Collaborazione 4
A Odio captcha e simili... PHP 0
M Problema captcha ? PHP 15
A Errore codice Captcha PHP 1
Shyson Non trova immagine Captcha PHP 4
felino Commenti: email di notifica, reply solo dall'admin e captcha WordPress 1
L forum con captcha Classic ASP 1
I captcha PHP 7
Shyson Un form non aggiorna il codice captcha Javascript 0
Shyson Pulsante refresh codice captcha Javascript 0
filippino phpBB: spam nonostante captcha e domanda di sicurezza phpBB 0
felino Really Simple Captcha: errore 404 sull'immagine WordPress 4
A Generatore captcha PHP 4
H Problema validazione CAPTCHA PHP 20
R Visualizzare captcha di un altro sito? PHP 2
asevenx problema con codice di sicurezza captcha PHP 2
V Immagini CAPTCHA con ASP senza librerie esterne Classic ASP 0
K modulo invio mai:l non riesco ad integrare captcha PHP 18
B Problemi guestbook con immagine captcha Classic ASP 0
R Captcha quasi ultimato...problem!!! PHP 6
borgo italia captcha in falsh Flash 7
Z Come inserire Captcha PHP 6
A Implementare CAPTCHA in directory .asp Classic ASP 6
M CAPTCHA - come installarlo PHP 4
F Captcha nel guestbook Classic ASP 0
A Implementare captcha in asp Classic ASP 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6

Discussioni simili