---
title: "Bildvalidering för formulär?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/149895-bildvalidering-för-formulär"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "bassebhu"
published: "2006-08-09T17:28:25.000Z"
updated: "2006-09-21T19:28:36.000Z"
replies: 10
views: 1222
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/149895-bildvalidering-för-formulär"
---

# Bildvalidering för formulär?

## #1 — bassebhu, 2006-08-09T17:28Z

Hej alla glada!

Jag tänkte snickra ihop ett bildvalideringssystem som kan användas för att slippa spam via formulär. Är det någon som redan har gjort ett i PHP eller vet vart jag kan få tag på ett schysst?

Hade tänkt mig den där typen där ett par tecken slumpas fram i form av en bild. Man skriver in tecknen i ett fält och det jämförs sedan med t ex. samma värde hashat från ett hidden-fält.

Alla förslag tas tacksamt emot. Det är väl en GD-lösning som jag är ute efter antar jag.

Tackar för svar!
Mvh,

Permalänk: https://www.webforum.nu/p/149895

## #2 — Fuel, 2006-08-09T19:33Z

Jag har gjort det 2ggr .. men har ingen aning om var filerna ligger .. ska leta .. hinner nån annan före så ta det

Permalänk: https://www.webforum.nu/p/1850921

## #3 — MickeA.com, 2006-08-09T19:39Z

Jag såg en tråd om det för inte så länge sen, tror det var här...

\*letar efter kod...\*

Oj, här är den:

```php
<?php
session_start();
header("Content-type: image/png");
 
// Generera en 6-siffrig kod
$string = rand(100000, 999999);
 
// Spara koden i en session, används vid formulär valideringen
$_SESSION['sess_code'] = $string;
 
// Höjd, bred på bilden
$width = 82;
$height = 15;
 
// Storlek och position på typsnittet
$textsize = 20;
$angle = 0;   // Snedställ texten
$right = 0;   // Hur lång till höger skall texten vara?
$top = 19;   // Hur högt upp skall texten vara?
 
// Sätt höjden och bredden
$image = imagecreate($width, $height);
 
// Ange bakgrundsfärgen
$bg_color = imagecolorallocate($image, 0xed, 0xec, 0xf1);
 
// Typsnittets färg
$text_color = imagecolorallocate($image, 0x47, 0x58, 0x7c);
 
// Skriv ut bilden med den genererade koden.
ImageTTFText($image, $textsize, $angle, $right, $top, $text_color, 'arial.ttf', $string);
imagepng($image);
imagedestroy($image);
?>
```

Har inte satt mig in i koden, tror den kommer härifrån.
Kanske är en start iaf?

Permalänk: https://www.webforum.nu/p/1850922

## #4 — Fuel, 2006-08-09T20:00Z

Här är regkey.php

```php
<?php
// Generate regkey image
// Fuelman
if (empty($_GET['id'])) {
	die("ERROR! You cant access this page");
}
$confirm_id = $_GET['id'];
$confirm_id = htmlspecialchars($_GET['id']);

if (!preg_match('/^[A-Za-z0-9]+$/', $confirm_id)) {
	die("ERROR! Wrong confirm id");
}

header('content-type: image/jpeg');
header('cache-control: no-cache, no-store');

$img = imagecreatetruecolor(300, 60);
$font = 'timesi.ttf';
$text_color = imagecolorallocate($img, 255, 255, 255);
$bag_color  = imagecolorallocate($img, 255, 51, 51);
imagefill($img, 0, 0, $bag_color);
imagettftext($img, 34, 0, 20, 44, $text_color, $font, $confirm_id);
imagejpeg($img, '', 75);
imagedestroy($img);
?>
```

 

**EDIT:** hehe .. ser att du hann före

Permalänk: https://www.webforum.nu/p/1850926

## #5 — bassebhu, 2006-08-10T17:37Z

Funkade lysande. Fuels funkade säkert också men det andra var mer optimerat för mitt ändamål.

Nu har jag två små frågor till:
1) Hur får man in en vald bakgrundsbild i stället för bakgrundsfärg i den koden? Är det imagecreatefrompng() som gäller?
2) Hur räknar man ut sådana där färger? ex. (0x47, 0x58, 0x7c)

Tackar för svar!

Permalänk: https://www.webforum.nu/p/1851083

## #6 — bassebhu, 2006-08-11T09:46Z

Någon? :)

Permalänk: https://www.webforum.nu/p/1851202

## #7 — Pedda, 2006-08-11T11:12Z

2)   Går bra att använda rgb kod

t.ex för vit färg

```php
imagecolorallocate($image, 255, 255, 255);
```

Permalänk: https://www.webforum.nu/p/1851229

## #8 — bassebhu, 2006-08-12T09:48Z

Tack. Det funkade. Har någon svar på 1:an också så blir tråden fulländad ;)

Min kod såg iaf ut så här när jag var färdig (förutsatt att man har en .ttf-fil att lägga till):

val.php

```
<?php
session_start(); 
header("Content-type: image/png"); 

// Generate a 5 number code --> 
$string = rand(10000, 99999); 

// Save code in session -->
$_SESSION['val_code'] = $string; 

// Image size -->
$width = 64; 
$height = 21; 

// Text settings -->
$textsize = 16;
$angle = 0; // Text angle
$right = 4; // Text position
$top = 18; // Text position
$font = 'Trebuchet MS.ttf'; // Path to font file

// Set image size -->
$image = imagecreate($width, $height); 

// Background color --> 
$bg_color = imagecolorallocate($image, 240, 240, 240); 

// Text color -->
$text_color = imagecolorallocate($image, 0, 45, 90); 

// Print image -->
ImageTTFText($image, $textsize, $angle, $right, $top, $text_color, $font, $string); 
imagepng($image); 
imagedestroy($image);
?>
```

Delar av check och formulär på formsidan:

```
if(isset($_SESSION['val_code']) && $_SESSION['val_code'] == $_POST['val']) {
  // rätt kod
} else {
  // fel kod
}

[...]

<input type="text" name="val" id="val" maxlength="5" />
<img src="val.php" style="width: 64px; height: 21px; border: none;" alt="val" />
```

r/ slarvfel

Permalänk: https://www.webforum.nu/p/1851424

## #9 — Pedda, 2006-08-12T10:26Z

Här har du ett kodexempel på hur du använder en bakgrundsbild

```php
<?php 
header("Content-type: image/jpeg"); 
header("Content-Disposition: inline; filename=minbild.jpg");

$im = imagecreatefromjpeg('bilder/minbild.jpg'); 
$white = imagecolorallocatealpha($im, 255, 255, 255, 75);

$string = "Lite text här";

imagettftext($im, 14, 0, 10, 20, $white, "trebuc.ttf", $string); 

imagejpeg($im, '', 90); 
imagedestroy($im); 
?>
```

Permalänk: https://www.webforum.nu/p/1851429

## #10 — bassebhu, 2006-08-12T11:11Z

allright. tack. antog att man skulle använda imagecreatefrom\*()

Permalänk: https://www.webforum.nu/p/1851438

## #11 — salkciN, 2006-09-21T19:28Z

Kul och se att mitt gamla skript kommer till användning :)
<http://www.phpportalen.net/viewtopic.php?p=366335#366335>

Permalänk: https://www.webforum.nu/p/1870604

---

Tråden på webben: https://www.webforum.nu/amne/php/149895-bildvalidering-för-formulär
