Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz kontaktowy, Pusty wynik z pola select
wbeatn
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

Ostrzeżenie: (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

  1. <form action="contact.php" method="post" id="contactform">
  2. <ol>
  3. <li>
  4. <label>Adresat</label>
  5. <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>
  6. </li>
  7. <li>
  8. <label for="name">Przedstaw się</label>
  9. <input id="name" name="name" class="text" />
  10. </li>
  11. <li>
  12. <label for="email">Twój email</label>
  13. <input id="email" name="email" class="text" />
  14. </li>
  15. <li>
  16. <label for="subject">Temat</label>
  17. <input id="subject" name="subject" class="text" />
  18. </li>
  19. <li>
  20. <label for="message">Wiadomość</label>
  21. <textarea id="message" name="message" rows="6" cols="50"></textarea>
  22. </li>
  23. <li class="buttons">
  24. <input type="image" name="imageField" id="imageField" src="imgs/send.gif" class="send" />
  25. <div class="clr"></div>
  26. </li>
  27. </ol>
  28. </form>


PHP

  1. <?php
  2. include('inc/system.php');
  3.  
  4. if(!$_POST) exit;
  5. $email = $_POST['email'];
  6.  
  7. //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
  8. if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
  9. $error.="Wpisano błędny adres email";
  10. $errors=1;
  11. }
  12. if($errors==1) echo $error;
  13. else{
  14.  
  15. $values = array ('name','email','message');
  16. $required = array('name','email','message');
  17.  
  18. $your_email = $_POST['getemail'];
  19. $email_subject = "New Message: ".$_POST['subject'];
  20. $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>';
  21. $header="From:$email\n";
  22. $header.="Content-Type: text/html; charset=utf-8\n";
  23.  
  24. foreach($values as $key => $value){
  25. if(in_array($value,$required)){
  26. if ($key != 'subject' && $key != 'company') {
  27. if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
  28. }
  29. $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>';
  30. }
  31. }
  32.  
  33. if(@mail($your_email,$email_subject,$email_content,$header)) {
  34. echo 'Message sent!';
  35. } else {
  36. echo 'ERROR!';
  37. }
  38. }
  39. ?>


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 ?

Ten post edytował wbeatn 31.03.2012, 00:03:06
Go to the top of the page
+Quote Post
xxdrago
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Po wyświetlaj sobie co zawierają zmienne.
Go to the top of the page
+Quote Post
wbeatn
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


Cytat(xxdrago @ 31.03.2012, 01:12:17 ) *
Po wyświetlaj sobie co zawierają zmienne.


Próbowałem, ale niestety wyświetla dane tylko z pól input i textarea, z pola select jest pusty wynik.
Go to the top of the page
+Quote Post
xxdrago
post
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Skrypt html działa poprawnie:

Kod
                    <form action="#" 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>
                     <input type="submit" name="post" value="Wyslij"/>
                    </form>
                    
                    
                    <?php
                    if ($_POST['post'])
                    {
                    echo 'ok';
                    echo $_POST['getemail'];
                    }
                    
                    
                    ?>


getemail zawiera e-mail do wysłania więc coś jest nie tak z skryptem php. Podczas wysyłania sprawdź co zawiera
Kod
print($your_email);

przed tym:
Kod
    if (@mail($your_email, $email_subject, $email_content, $header)) {

i usuń @ małpę... (IMG:style_emoticons/default/smile.gif)

Ten post edytował xxdrago 31.03.2012, 00:32:56
Go to the top of the page
+Quote Post
wbeatn
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


  1. print($your_email);
  2. if(@mail($your_email,$email_subject,$email_content,$header)) {
  3. echo 'Message sent!';


Po naciśnięciu buttona Wyślij pojawia się tylko 'Message sent!'.

  1. <input type="submit" name="post" value="Wyslij"/>
  2. </form>
  3.  
  4.  
  5. <?php
  6. if ($_POST['post'])
  7. {
  8. echo 'ok';
  9. echo $_POST['getemail'];
  10. }
  11.  
  12.  
  13. ?>


Kiedy dołożyłem to do swojego kodu HTML po naciśnieciu w Wyślij nie wyświetla się ani 'ok', ani email, który powinien się wyświetlić.

Ten post edytował wbeatn 31.03.2012, 00:52:54
Go to the top of the page
+Quote Post
xxdrago
post
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Ten skrypt to jest jakiś gotowiec czy sam go pisałeś? Bo jak nie sam to może lekko go zmieńmy?

  1. <?php
  2.  
  3. include('inc/system.php');
  4.  
  5. if (!$_POST)
  6. $email = $_POST['email'];
  7.  
  8. //$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
  9. if (!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" . "@" . "([a-z0-9]+([\.-][a-z0-9]+)*)+" . "\\.[a-z]{2,}" . "$", $email)) {
  10. $error.="Wpisano błędny adres email";
  11. $errors = 1;
  12. }
  13. if ($errors == 1)
  14. echo $error;
  15. else {
  16.  
  17. // Ogarnij sobie to tutaj
  18. $to = $_POST['getemail']; // Adresat
  19. $subject = $_POST['subject']; // Temat
  20. $message = $_POST['message']; // Wiadomosc
  21. $headers = 'From: webmaster@example.com' . "\r\n" .
  22. 'Reply-To: webmaster@example.com' . "\r\n" .
  23. 'X-Mailer: PHP/' . phpversion();
  24.  
  25. mail($to, $subject, $message, $headers);
  26. }
  27. ?>


Ten post edytował xxdrago 31.03.2012, 00:50:53
Go to the top of the page
+Quote Post
wbeatn
post
Post #7





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 7.05.2007

Ostrzeżenie: (0%)
-----


Twój skrypt pozbawia istotnych dla mnie elementów. Nie chcę go zmieniać do takiego stopnia. Wolałbym aby skupić się nad rzeczonym polem 'select' i resztę pozostawić nienaruszoną. Pozatym nie widzę aby wprowadzone przez Ciebie zmiany, zmieniały coś istonie. To jest to samo praktycznie, a zmiany nijak się mają do tagu 'select'.

Najlepiej by było, gdyby ktoś z was zechciał całość wypróbować na swoim serwerze bawiąc się przy tym kodzie wypróbowując różnego rodzaju rozwiązania. Zaznaczam, że chciałybm aby utrzymać funkcjonalność całego skryptu. (IMG:style_emoticons/default/smile.gif)

Ten post edytował wbeatn 31.03.2012, 01:48:01
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 02:00