Pusty wynik z pola SELECT w form. konatktowym

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

  1. Adresat Dyr. stategicznyDyr. handlowy
  2. Przedstaw się
  3. Twój email
  4. Temat
  5. Wiadomość

[/code] PHP

[code]<?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 = ’
Ta wiadomość została wysłana z formularza na stronie www.xxx.com’; $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 .= ’
‘.getforminput($_POST[$value]).’
'; } } 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 ?

wubeen ,

Zapoznaj się z tematem i popraw tytuł tematu na konkretny, mówiący o problemie. W celu dokonania zaleconej korekty proszę użyć przycisku Edytuj przy poście otwierającym ten temat.

Zignorowanie zalecenia będzie skutkowało usunięciem tematu do Kosza.

Gotowe. Na innym forum mają takie cacko, co powoduje, że gdy w tytule użyłem tego wyrazu, to wyskoczyło powiadomienie iż on "słowem-wytrychem’ jest i co bym go szybciej zmienił. Niestety u was musicie się bawić w pisanie postów w tak drobnych sprawach. Pomyślcie, to nic trudnego wykluczyć możliwość używania kilku wyrazów w tytule wątku.

Co zwraca

echo htmlspecialchars($_POST['getemail']).'
';

echo htmlentities($_POST['getemail']).'
';

?? Może tak

$your_email = urldecode($_POST['getemail']);

Od tego masz słownik w przeglądarce.

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

	echo '1 - '.htmlspecialchars($_POST['getemail']).'
';

	echo '2 - '.htmlentities($_POST['getemail']).'
';

	echo '3 - '.htmlspecialchars(urldecode($_POST['getemail'])).'
';

	echo '4 - '.htmlentities(urldecode($_POST['getemail'])).'
';

	echo '5 - '.urldecode($_POST['getemail']).'
';

	echo '6 - '.$_POST['getemail'].'
';

	echo '7 - '.$_POST['email'].'
';

	echo '8 - '.$_POST['subject'].'
';

	echo '9 - '.$_POST['name'].'
';

	echo '10 - '.$_POST['message'].'
';


	echo 'Message sent!'; 

	} else {

		echo 'ERROR!';

	}

Pola od 1 do 6: pusty wynik.

Reszta: wszystko OK!

Po wrzuceniu w plik test.php takiego kodu…

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

Ta wiadomość została wysłana z formularza na stronie www.xxx.com’; $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 .= ‘
’.nl2br($_POST[$value]).’
’; } } if(mail($your_email,$email_subject,$email_content,$header)) { echo ‘Message sent!’; } else { echo ‘ERROR!’; } } ?> <?php echo '1 - ‘.htmlspecialchars($_POST[‘getemail’]).’ '; echo '2 - ‘.htmlentities($_POST[‘getemail’]).’ '; echo '3 - ‘.htmlspecialchars(urldecode($_POST[‘getemail’])).’ '; echo '4 - ‘.htmlentities(urldecode($_POST[‘getemail’])).’ '; echo '5 - ‘.urldecode($_POST[‘getemail’]).’ '; echo '6 - ‘.$_POST[‘getemail’].’ '; echo '7 - ‘.$_POST[‘email’].’ '; echo '8 - ‘.$_POST[‘subject’].’ '; echo '9 - ‘.$_POST[‘name’].’ '; echo '10 - ‘.$_POST[‘message’].’ '; ?>
1.
2. Adresat Dyr. stategicznyDyr. handlowy
3. Przedstaw się
4. Twój email
5. Temat
6. Wiadomość
7.

[/code] …i wysłaniu formularza widzę takie coś…

[code]Notice: Undefined variable: errors in /srv/www/localhost/test.php on line 12 Message sent! 1 - mail@wp.pl 2 - mail@wp.pl 3 - mail@wp.pl 4 - mail@wp.pl 5 - mail@wp.pl 6 - mail@wp.pl 7 - mail@wp.pl 8 - Test 9 - Raf 10 - testowa testowa Adresat Przedstaw się Twój email Temat Wiadomość

U Ciebie jest tak samo?

Albo to jakiś dziwny serwer albo w inc/system.php coś się dziej ze zmienną $_POST a w szczególności kluczem - co jest bardziej prawdopodobne. .

Te kombinacje z urldecode etc. zbędne.

Błąd w 12 linii, to odwołanie do nieistniejącej zmiennej $errors. Trza na samym początku dać $errors=0; i będzie cacy.

Co jest w includowanym pliku i jaki ma on wpływ na wszystko - licho wie …prawdopodobnie jest w nim funkcja getforminput.

Tak czy owak, po korekcie tej zmiennej i bez funkcji getforminput (albo z nią i returnem) kod działa.

Poza tym, nie używaj eregi -ma status deprecated. Zamiast niej preg_match.

To było strzelanie - bo coś się dzieje raczej w załączonym pliku, tylko czekamy za tym co się wyświetli użytkownikowi. Samo to że nie zwraca wartości to jest nadwyraz dziwne.

A co za różnica - chodzi tylko o test.