Visa ett inlägg
Oläst 2006-08-04, 21:13 #1
rille77s avatar
rille77 rille77 är inte uppkopplad
Medlem
 
Reg.datum: Dec 2003
Inlägg: 213
rille77 rille77 är inte uppkopplad
Medlem
rille77s avatar
 
Reg.datum: Dec 2003
Inlägg: 213
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.

Kod:
session_start();
define("TILL_ADRESS", "[email protected]");
 
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";
 }
 }
}
rille77 är inte uppkopplad   Svara med citatSvara med citat