1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

ROZWIĄZANE problem z wysyłka formularza - sprawdzanie pola from w formularzu kontaktowym

Dyskusja w 'WordPress, Joomla!, PHP, HTML, CSS' rozpoczęta przez użytkownika YacaZG, 14 Marzec 2016.

  1. YacaZG

    YacaZG Uczestnik

    Wiadomości:
    28
    Docenione treści:
    1
    Czesc,

    Mam taki skrypt. Siedze i nie moge rozkminic dlaczego nie dziala (kiedys dziala). Nie wiem tez gdzie i czy powinienem wstawic funkcje -f nazwa@skrzynki.pl ?

    Kod:
    <?php
    } else {
    
    //twoje dane
    $email = 'test@domena.pl';
    
    //dane z formularza
    $imie_nazwisko = $_POST['imie_nazwisko'];
    $email_klienta = $_POST['email_klienta'];
    $nr_telefonu = $_POST['nr_telefonu'];
    $rodzaj_imprezy = $_POST['rodzaj_imprezy'];
    $data_imprezy = $_POST['data_imprezy'];
    $szacunkowa_liczba_gosci = $_POST['szacunkowa_liczba_gosci'];
    $tekst_wiadomosci = $_POST['tekst_wiadomosci'];
    
    
    if(!empty($imie_nazwisko) && !empty($nr_telefonu)) {
    
    
    //--- początek funkcji weryfikującej adres e-mail ---
    function checkMail($checkmail) {
      if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
        if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
            return true;
          }else{
            return true;
          }
      } else {
        return false;
      }
    }
    //--- koniec funkcji ---
    
    if(checkMail($email_klienta)) {
      //dodatkowe informacje: ip i host uzytkownika
      $ip = $_SERVER['REMOTE_ADDR'];
      $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    
      //tworzymy szkielet wiadomosci
      //tresc wiadomosci
    
      $mailText = "Zapytanie z formularza kontaktowego strony www:\n$formText\nOd: $imie_nazwisko, e-mail $email_klienta, nr-tel $nr_telefonu, rodzaj-imprezy $rodzaj_imprezy, data-imprezy $data_imprezy, liczba-gosci $szacunkowa_liczba_gosci, wiadomosc; $tekst_wiadomosci ";
    
      //adres zwrotny
      $mailHeader = "From: $imie_nazwisko <$email_klienta>";
    
      //funkcja odpowiedzialna za wyslanie e-maila
      @mail($email, 'Formularz kontaktowy', $mailText, $mailHeader) or die('Niepowodzenie: komunikat ');
    
      //komunikat o poprawnym wyslaniu wiadomosci
      echo 'Wiadomość została wysłana';
    } else {
      echo 'Adres e-mail jest niepoprawny';
    }
    
    } else {
      //komunikat w przypadku nie powodzenia
      echo 'Wypełnij wszystkie pola formularza';
    }
    
    //--- koniec formularza ---
    }
     
  2. YacaZG

    YacaZG Uczestnik

    Wiadomości:
    28
    Docenione treści:
    1
    już sobie poradziłem, musiałem zmienić zmienna w
    Kod:
    $mailHeader = "From: $imie_nazwisko <$email_klienta>";
    na
    Kod:
    $mailHeader = "From: $imie_nazwisko <$email>";
     
  3. Mariusz

    Mariusz pomoc.home.pl home.pl Administrator forum

    Wiadomości:
    3 088
    Docenione treści:
    302
    @YacaZG - aktualizacja tej zmiennej była wymagana, ponieważ w przeciwnym wypadku w nagłówku wiadomości dodawana byłaby informacja, że wiadomość e-mail z formularza, wysłana została z adresu e-mail klienta (a to byłoby nieprawdą).

    Poniżej dodaję fragment Twojego kodu. W tym miejscu powinieneś podać adres e-mail konta pocztowego, z którego będą wysyłane wiadomości e-mail z formularza kontaktowego. W tym miejscu powinien zostać podany adres e-mail skrzynki, która utworzona jest na tym samym serwerze, na którym uruchmiany jest skrypt formularza. W przeciwnym wypadku zabezpieczenia antyspamowe występujące na naszych serwerach, zablokowałyby wysyłkę wiadomości z tego formularza kontaktowego.
    Kod:
    //twoje dane
    $email = 'test@domena.pl';


    Natomiast poniższy fragment kodu dodaje do nagłówka wiadomości e-mail informacje, z jakiego adresu e-mail wiadomość z formularza została wysłana (pole from). Jeśli nie zmieniłbyś tego elementu tak jak opisałeś, to nasz serwer pocztowy odrzucałby wysyłkę takiej wiadomości z formularza, ponieważ konto e-mail podane w polu "From" nie zostałoby odnalezione na serwerze, na którym formularz kontaktowy jest uruchomiony.
    Kod:
    //adres zwrotny
      $mailHeader = "From: $imie_nazwisko <$email>";
     
  4. casar

    casar Profesjonalista

    Wiadomości:
    492
    Docenione treści:
    132
    Dodatkowo jak do zmiennej $mailHeader dopiszesz nagłówek Reply-to: $email_klienta, to później łatwiej będzie Ci później odpisać na wiadomość.
     
    Mariusz lubi to.
  5. Mariusz

    Mariusz pomoc.home.pl home.pl Administrator forum

    Wiadomości:
    3 088
    Docenione treści:
    302
    Święta prawda :)


    Kiedyś było to "standardem", że serwery pocztowe przepuszczały wiadomości z formularzy kontaktowych z dowolnych adresów e-mail. Zmieniło się to jakiś czas temu, przynajmniej u nas ;)
     

Poleć forum znajomym