FAQ |
Kalender |
2006-08-04, 21:13 | #1 | |||
|
||||
Medlem
|
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"; } } } |
|||
Svara med citat |
Svara |
|
|