Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz kontaktowy, Pusty wynik z pola select
wbeatn
post 31.03.2012, 00:02:24
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 31.03.2012, 00:12:17
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.


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
wbeatn
post 31.03.2012, 00:24:29
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 31.03.2012, 00:32:18
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ę... smile.gif

Ten post edytował xxdrago 31.03.2012, 00:32:56


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
wbeatn
post 31.03.2012, 00:44:29
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 31.03.2012, 00:50:12
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


--------------------
GG: 10972302 :)
Go to the top of the page
+Quote Post
wbeatn
post 31.03.2012, 01:10:48
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. 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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:05