---
title: "Problem med text på bild"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/149730-problem-med-text-på-bild"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "rille77"
published: "2006-08-04T19:12:38.000Z"
updated: "2006-08-04T20:01:36.000Z"
replies: 1
views: 261
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/149730-problem-med-text-på-bild"
---

# Problem med text på bild

## #1 — rille77, 2006-08-04T19:12Z

Har stött på ett underligt fel med ett kontaktformulär i PHP.
Jag är absolut ingen PHP guru utan brukar hålla på med ASP så jag har absolut ingen aning om vad som kan vara galet här.

Jag har ett kontaktformulär där man ska fylla i en verifieringskod innan man skickar mailet som skydd mot spam, koden skrivs på en .png bild som visas på sidan.

Problemet är att koden skrivs inte på bilden första gången sidan laddas men om man däremot uppdaterar sidan så funkar allt som det ska.
Skulle vara tacksam för hjälp.

```php
session_start();
define("TILL_ADRESS", "adress@domain.com");
 
function SetVerificationCode() {
 srand((double)microtime()*1000000);
 $string = md5(rand(0,9999));
 $verification_code = strtoupper(substr($string, 17, 5));
 $_SESSION['verification_code'] = $verification_code;
 return $verification_code;
}
 
if ($_GET['img'] == 'verificationcode') {
 header("Content-type: image/png");
 $im = ImageCreate(45, 20);
 $white = ImageColorAllocate($im, 0, 0, 0);
 $black = ImageColorAllocate($im, 255, 255, 255);
 SetVerificationCode();
 ImageFill($im, 0, 0, $black);
 ImageString($im, 4, 2, 2, $verification_code, $white);
 ImagePNG($im);
 ImageDestroy($im);
 exit;
}
 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 $namn = $_POST['namn'];
 $epost = $_POST['epost'];
 $meddelande = $_POST['meddelande'];
 
 if ($_SESSION['verification_code'] == '')
  die("Verifieringskod inte satt, avslutar.");
 if ($_POST['kod'] != $_SESSION['verification_code']) {
  $err = "Felaktig verifieringskod. Var vänlig försök igen.";
  $field = "kod";
 } else {
  //Skydda från sk. e-mail injection via mail headers
  if ($epost != '' && preg_match ( "/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $epost) ) {
   if(isset($namn)) {
    $text = "\nNamn: " . $namn;
    $text .= "\nE-post: " . $epost;
    $text .= "\nMeddelande: " . $meddelande;
    mail(TILL_ADRESS, "Kontaktformulär hemsida: " . $namn, $text, "From: <$epost>"); 
    
    SetVerificationCode();
    
    header("Location: /");
   }
  } else {
   $err = "Du har angett en ogiltig e-postadress!";
   $field = "ePost";
  }
 }
}
```

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

## #2 — tydal, 2006-08-04T20:01Z

Låter som det skulle vara något sessionsrelaterat och sessioner behöver du ju inte använda inom samma phpanropp, utan det är ju när du ska skicka data mellan olika sidor. Så det skulle vi kunna ta bort genom att ersätta raden:
imagestring($im, 4, 2, 2, $verification_code, $white);
med:
imagestring($im, 4, 2, 2, SetVerificationCode(), $white);

(Och så får du ta bort raden SetVerificationCode(); lite högre upp.)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/149730-problem-med-text-på-bild
