Strona 1 z 1

Problem z formularzem kontaktowym

: 31 marca 2012, 04:30
autor: wbeatn
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

Kod: Zaznacz cały

        			<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></td>
						</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

Kod: Zaznacz cały

<?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 ?