Pusty wynik z pola select w prostym form. kontaktowym

wbeatn

Nowicjusz
Dołączył
31 Marzec 2012
Posty
1
Punkty reakcji
0
Witam.

Mam skrypt służący do wysyłania wiadomości email z poziomu strony internetowej. Chcę aby adresat był wybierany z pola 'select' w formularzu.

W owym polu posiadam dwie opcje z różniącymi się od siebie emailami jako wartość 'value'. Niestety kiedy w kodzie PHP jako email podam "$_POST['getemail']" mail nie dociera do adresata. Kiedy zaś zamiast wartości $_POST wpiszę po prostu adres emailowy, wiadomość dochodzi bez problemu.



HTML



HTML:
<form action="contact.php" method="post" id="contactform">

<ol>

<li>

<label>Adresat</label>

<select name="getemail" class="text"><option value="email1@mail.com" selected="selected">Dyr. stategiczny</option><option value="email2@mail.com">Dyr. handlowy</option></select>

</li>

<li>

<label for="name">Przedstaw się</label>

<input id="name" name="name" class="text" />

</li>

<li>

<label for="email">Twój email</label>

<input id="email" name="email" class="text" />

</li>

<li>

<label for="subject">Temat</label>

<input id="subject" name="subject" class="text" />

</li>

<li>

<label for="message">Wiadomość</label>

<textarea id="message" name="message" rows="6" cols="50"></textarea>

</li>

<li class="buttons">

<input type="image" name="imageField" id="imageField" src="imgs/send.gif" class="send" />

<div class="clr"></div>

</li>

</ol>

</form>



PHP



PHP:
<?php

include('inc/system.php');

if(!$_POST) exit;

$email = $_POST['email'];



//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';

if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){

$error.="Wpisano błędny adres email";

$errors=1;

}

if($errors==1) echo $error;

else{



$values = array ('name','email','message');

$required = array('name','email','message');

$your_email = $_POST['getemail'];

$email_subject = "New Message: ".$_POST['subject'];

$email_content = '<div style="width: 60%; padding: 8px; margin-bottom: 2px; background: #252525; border: solid 1px #e4e4e4; font-size: 13px; color: #e8e8e8;"><b>Ta wiadomość została wysłana z formularza na stronie <a style="color: #a0a0a0; text-decoration: none;" href="http://www.xxx.com">www.xxx.com</a></b></div>';

$header="From:$email\n";

$header.="Content-Type: text/html; charset=utf-8\n";

foreach($values as $key => $value){

if(in_array($value,$required)){

if ($key != 'subject' && $key != 'company') {

if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }

}

$email_content .= '<div style="width: 60%; padding: 8px; margin-bottom: 2px; background: #f6f6f6; border: solid 1px #e4e4e4; font-size: 13px; color: #505050;">'.getforminput($_POST[$value]).'</div>';

}

}



if(@mail($your_email,$email_subject,$email_content,$header)) {

echo 'Message sent!';

} else {

echo 'ERROR!';

}

}

?>



Wydaje się, że wszystko powinno działać. Niestety w przypadku użycia $_POST mail nie dociera na skrzynkę pocztową. Jak rozumiem z pola select nie pobiera wybranej opcji i wysyłany mail nie posiada adresata. Dlaczego ?



Sprawdzałem wszystkie zmienne. Wyświetlają się poprawnie wynik ze wszystkich oprócz właśnie wyniku z pola select.



PHP:
 if(mail($your_email,$email_subject,$email_content,$headers)) {

echo '1 - '.htmlspecialchars($_POST['getemail']).'<br />';

echo '2 - '.htmlentities($_POST['getemail']).'<br />';

echo '3 - '.htmlspecialchars(urldecode($_POST['getemail'])).'<br />';

echo '4 - '.htmlentities(urldecode($_POST['getemail'])).'<br />';

echo '5 - '.urldecode($_POST['getemail']).'<br />';

echo '6 - '.$_POST['getemail'].'<br />';

echo '7 - '.$_POST['email'].'<br />';

echo '8 - '.$_POST['subject'].'<br />';

echo '9 - '.$_POST['name'].'<br />';

echo '10 - '.$_POST['message'].'<br />';



echo 'Message sent!';

} else {

echo 'ERROR!';

}



Pola od 1 do 6: pusty wynik.

Reszta: wszystko OK!
 
Do góry