Prawie na każdej stronie internetowej znajduje się formularz kontaktowy. Wykonanie prostego formularza nie należy do zadań trudnych, jednak często przerasta początkujących webmasterów. Przekonuję się o tym prawie codziennie, czytając posty na forum. Postanowiłem napisać i udostępnić za darmo taki skrypt, przy okazji realizując prośbę z Drzewka życzeń.
Wymagania
- serwer z obsługą PHP5
- aktywna funkcja mail() – większość darmowych serwerów nie obsługuje tej opcji, natomiast praktycznie każdy serwer komercyjny ma ją włączoną
- edytor tekstowy – np. darmowy Notepad++
- podstawowa znajomość CSS, żeby nadać odpowiedni wygląd formularzowi
Jeśli masz zamiar wprowadzać zmiany w formularzu i jego działaniu, musisz znać podstawy HTML i PHP.
Sposób użycia
- rozpakuj pliki
- otwórz plik ustawienia.php, musisz podać adres e-mail, na który mają przychodzić maile wysłane ze strony, w tym pliku możesz również ustawić, jakie pola są wymagane oraz treść komunikatów (wszystkie opcje są opisane w komentarzach tego pliku)
- wyślij pliki na serwer do katalogu głównego Twojej strony
- nadaj odpowiedni wygląd formularzowi, używając CSS (szablon znajduje się w pliku formularz.css)
- w miejscu, w którym chcesz umieścić formularz na stronie np. podstrona kontakt.html wstaw kod:
<?php include('mail.php'); ?>
Licencja
Możesz:
- za darmo używać skryptu w projektach niekomercyjnych i komercyjnych (np. na stronach Twoich klientów)
- wprowadzać dowolne zmiany w skrypcie, pamiętając o pozostawieniu danych autora w pliku mail.php, w tej formie, w której są obecnie
Nie możesz:
- sprzedawać, rozdawać, ani dystrybuować tego skryptu jako osobnego produktu, jedyne legalne źródło jego pozyskania to strona Websta.pl
Jeśli potrzebujesz innej wersji formularza, zapraszam Cię do kontaktu przez moją stronę firmową Labsta.com, gdzie możesz złożyć zamówienie na taką jak i inne usługi związane z projektowaniem stron internetowych.
Nie zapomnij zasubskrybować Kanału RSS, żeby zawsze być na bieżąco.
—
Edit:
Ze względu na nieustanne maile, prośby, żądania (!) i wszelkie inne natarczywe formy kontaktu chciałem zaznaczyć, że:
Od teraz przestaje odpowiadać na wiadomości i z automatu usuwam komentarze typu – „Chciałem zrobić z tego ankietę, newsletter, formularz zamówienia itd. Jak mam to zrobić?/Zrób mi to”. Odpowiedź jest zawarta na końcu pkt. Wymagania.
Tagi: CSS, formularz, mail, php, skrypt, webdesign, XHTML, za darmo

Witam.
Mam problem z implementacją skryptu. Nie da się ukryć, że jestem baaardzo początkujący i proszę w związku z tym o wyrozumiałość.
Stronka jest na serwerze lokalnym (Wamp 2.0i). Przy odpaleniu skryptu wyświetla mi się coś takiego:
Notice: Undefined index: nick in E:\wamp\www\formularz\mail.php on line 32
Notice: Undefined index: mail in E:\wamp\www\formularz\mail.php on line 33
Notice: Undefined index: temat in E:\wamp\www\formularz\mail.php on line 34
Notice: Undefined index: tresc in E:\wamp\www\formularz\mail.php on line 35
Poniżej jest (zdaję się) normalnie działający formularz…
Co z tym począć?
Będę bardzo wdzięczny za odpowiedź.
Pozdrawiam
mam może prosty problem z „ogonkami”. Skrypt jest super tylko że w przychodzącej wiadomości mam krzaczki zamiast żźćół itp
Okazało się że trzeba było / wystarczyło zmienić kodowanie, a skrypcik chodzi rewelacyjnie :)
efekt jest tutaj http://norweski.gedania.net
niestety ale nie poradziłem sobie z likwidacją wysyłania przy odświeżaniu strony i formularz zlikwidowałem :(
Mam taki problem. Mam galerię zdjęć – każde zdjęcie na osobnej stronie. Pod każdym zdjęciem chcę umieścić link do formularza kontaktowego, który oczywiście również będzie w osobnym pliku (dokładnie tak jak tutaj demo). Chcę jednak, aby w zależności na której stronie kliknę w ten formularz, przemycił mi się do niego tytuł. Może wytłumaczę na przykładzie. Mam podstrony: a,b,c i d. Na każdej z nich link do formularza, który jest na podstronie e. I teraz w zależności jak np. kliknę na link do formularza z podstrony a, to automatycznie tytuł wiadomości staje mi się „a”. I analogicznie jak klikam na formularz z podstrony c, to tytuł też robi mi się c. Jest to możliwe do zrobienia? Obecnie link do formularza z podstron mam umieszczony sposobem …
Z góry WIELKIE dzięki za szybką pomoc.
Możliwe do zrobienia, ale będzie z tym roboty. Nie możesz zaufać zbytnio $_SERVER['HTTP_REFERER'], ani ciastkom, więc trzeba by używać innych typu $_SERVER['PHP_SELF'] i przekazać te wartości np. przez parametr w linku np. /kontakt.html?ref=nazwa_fotki itd. Potem pogrzebać w formularzu i jakoś wstawić tą zmienną w tytuł. Trochę zabawy z tym będzie.
Niestety nie działa ;/ Wszystko zrobiłem zgodnie z instrukcją, wrzuciłem na serwer i formularz się nie pojawia ;/ Proszę o pomoc. gg:5719706
formular zmi sie wyswietla wszystko ok , ustawiłam sój email zeby przysyałło mi wiadomości i nic nie dostaje
hmm formularz rewelacja podoba mi się tworzę strony już od jakiegoś czasu ale żaden ze mnie zaawansowany webmaster i nie mogę sobie poradzić ze stylem formularza :( może to głupie ale już się pogubiłem z tym no i @ także do mnie nie dochodzą ? Może ktoś poradzi coś w nic prawie nie ingerowałem oprócz wpisania @ na którego mają dochodzić wiadomości
Świetny skrypt, polecam ;).
Miłego użytkowania.
Pozdrawiam.
Witam,
U mnie formularz działa, wiadomości dochodzą ;)
Tylko jak wyślę wiadomość to mam sam komunikat że mail został wysłany, a ja chciałbym też by ponownie wyświetlił się pusty formularz (teraz muszę dać wstecz na przeglądarce)
Da rady tak zrobić proszę o instrukcję
Nie przypadkiem tak to działa :)
Zmienić można… na własną rękę. Jeśli spełniasz wymagania, to sobie poradzisz bez problemu.
Jest Pan wielki!!! Świetny skrypt!!!!!
Bez przesady, ani pan, ani wielki ;) Fajnie, że się przydało.
Pozdrawiam.
Witam ,
Poradziłem sobie z wcześniejszym moim zapytaniem ten wpis rozwiązał problem
print wyswietl_forme();
Irytuje mnie tylko po wysłaniu maila i przy odświeżeniu strony wskakujący komunikat który trzeba potwierdzić – jest na to jakaś rada?
pozdrawiam
Super skrypt. Wszystko działa ok, tylko emaila którego otrzymuje jest małymi literami, da się jakość powiększyć?
Witam, w którym dokładnie miejscu trzeba wstawić ? Na stronie głównej w odnośniku do podstrony, czy na podstronie zatytułowanej u mnie napisz2.html?
Skopiowałem pliki na serwer, zmieniłem adres, nie wiem gdzie wstawić i wyskakuje mi błąd 404.
Formularz wyświetla się na podstronie i wyskakuje mi błąd 404.
Przepraszam za takie błahe pytanie ale nie potrafię sobie z tym poradzić.
Przepraszam zapomniałem wkleić: nie wiem gdzie wstawić ?
Skrypt super. :-) Wlasnie takiego czegos szukalem.
Tylko jedno mam pytanie. Gdy na stronie kontakt.html wstawiam zapis w miejscu gdzie chce miec formularz i ta strone kontakt.html zapisze jako html to po wrzuceniu na serwer formularza nie ma. Gdy ta strone kontakt.html zapisze jako kontakt.php to na serwerze widac formularz. Czyli ma byc strona kontakt zapisana jako php?
Co prawda jak testowo wysylam do siebie maila to pokazuje mi blad serwea… ale nad tym jeszcze pokombinuje, bo serwer obsluguje funkcje mail.
To czy plik ma mieć rozszerzenie .php to zależy od ustawień Twojego serwera. Nie jest to błąd :)
Oj nie pokazalo w poscie tego zapisu ktory wstawilem w miejscu w ktorym chce miec formularz. Chodzi o tej odsylacz do pliku mail.php
Dziekuje za odpowiedz. :-) Wiec zostawie w pliku php. Teraz bede kombinowal co z tym bledem serwera…
ech to wcale nie dziala: . ofc jestem poczatkujacy, ale nawet jak odpalisz Twoj index.html to przeciez formularz sie nie pojawia. dlaczego?
chodzi mi ze nie dziala, gdy wpisze samo php include itp (tam sie nie pojawilo)
Żeby php działało musisz to wrzucić na serwer (albo zainstalować go na kompie).
Znaczy zaczne od tego, ze jak skopiowalem zrodlo strony z dema i podmienilem na , dalem odnosnik do nowej strony (zalozmy, ze formularz.html ) to nawet wyslalona maila. Oczywiscie style nie dzialaly itp ale to malo wazne poki co. Lecz chcialbym to wrzucic na ktoras z moich podstron a nie tworzyc oddzielnej (formularz.html). Jak to zrobic?
Znaczy zaczne od tego, ze jak skopiowalem zrodlo strony z dema i podmienilem ”” na ”” , dalem odnosnik do nowej strony (zalozmy, ze formularz.html ) to nawet wyslalona maila. Oczywiscie style nie dzialaly itp ale to malo wazne poki co. Lecz chcialbym to wrzucic na ktoras z moich podstron a nie tworzyc oddzielnej (formularz.html). Jak to zrobic?
aa nie widac tego co zaminilem, wiec zamiast /formularz/ dalem mail.php w form action
Albo inaczej. Mam juz strone w swoim stylu css i chcialbym umiescic Twoj formularz na niej. Po wyslaniu czy ew bledach, chcialbym zeby pozostal na mojej stronie a nie wlaczal nowa. Da sie to zrobic?
Dzieje się tak pewnie dlatego, że nie używasz tego co udostępniłem w paczce. Parametr action to właśnie strona, na którą zostaniesz przeniesiony po wysyłce, a Ty tam coś namieszałeś.
Myślę, że include na Twojej podstronie nie działa, bo Twój serwer nie wykonuje php na stronach z rozszerzeniem .html
Używaj plików, które są w paczce i albo nadaj podstronie rozszerzenie .php albo zmień ustawienia serwera.
Witam to jeszcze raz ja. Tym razem mam inne zapytanie: w mail.php jest w funkcji wysylajacej maila napisane: ‘Od: ‘ jakas tresc,ktorej nie zacytuje ‘‘. Niestety po wyslaniu wiadomosci otrzymuje maila, z niepogrubionymi wyrazami a z ” „. Jak zastosowac poprawnie to pogrubianie czy nowy akapit?
Na pierwszy rzut oka wygląda, że aplikacja, którą czytasz pocztę nie odczytuje wiadomości jako html, lecz zwykły tekst.
Witam,
Mam problem… chodzi mi o to, że formularz wstawiłem na stronkę pomiędzy o pewnej wysokości i przy poprawnym wypełnieniu formularza pojawia się komunikat na „czystej stronie” pomiędzy moimi o treści „Dziękujemy. Twoja wiadomość została wysłana.”
Natomiast, jeśli formularz jest błędnie wypełniony, to komuniat z błędami o treści „Wiadomość NIE została wysłana. Popraw poniższe błędy, itd….” pojawia mi się na górze przed formularzem, co komplikuje mi sprawę, ponieważ wtedy formularz ucieka na dół i jest ucięty.
Proszę o pomoc, jak mam to zrobić, aby komunikat z błędem również był pokazywany na również na czystej stronie, tak jak to jest w przypadku komunikatu informującego o poprawnym wypełnieniu formularza i wysłaniu jego do odbiorcy…?
Skrypt działa właśnie tak, jak działa :]
Łatwo go nie przerobisz na coś takiego jak oczekujesz. Jego użyteczność jest oparta na tym, że jak jest błąd przy wypełnianiu to możesz go od razu poprawić. W innym wypadku trzeb by użyć jakiegoś linka cofnij itd.
W tej formie skrypt raczej nie spełni Twoich oczekiwań.
BTW nadawanie wysokości elementom html to zwykle ZŁO, a już szczególnie w treści. Pamiętaj też, że na stronie ważniejsza jest funkcjonalność niż design.
W tej treści brakuje wurazów div, które były w nawiasach dlatego mi ich nie pokazało :)
Mam problem… chodzi mi o to, że formularz wstawiłem na stronkę pomiędzy (div) o pewnej wysokości i przy poprawnym wypełnieniu formularza pojawia się komunikat na “czystej stronie” pomiędzy moimi (div) o treści “Dziękujemy. Twoja wiadomość została wysłana.”
Witam
Skrypt zapowiada się super ale mi nie działa :) Wywala: Fatal error: call to undefined function: filter_var() in mail.php line 55
Niestety z php zaczynam więc nie bardzo wiem jak się za to zabrać
Podłączyłem mail.php pod stronę i wgrałem wszystkie pliki, zmieniłem mail. Nic więcej nie zmieniałem.
Musisz używać php5. Jak to ustawić dowiesz się z pomocy hostingu ew. od admina.
Fakt. To walczę dalej bo tu jest jakiś problem z php5 chyba. Dzięki wielkie za wyjaśnienie
Pozdrawiam
Już działa. Udało się uruchomić php5 wszystko super dzięki wielkie i jeszcze raz pozdrawiam
Witam ponownie
Dodałem do formularza jedno pole, telefon. Dodałem wszędzie gdzie trzeba „tele” podobnie do „mail” czy „nick” . Zamieniłem żeby wysyłał numer zamiast treści i wszystko działa. Problem mam żeby wysyłał i treść i telefon.
Domyślam się że dopisać trzeba to gdzieś tutaj:
if(mail($adres_odbiorcy,”=?UTF-8?B?”.base64_encode($_POST['temat']).”?=”,’Od: ‘.$_POST['nick'].’
‘,’From:’.$_POST['mail'].”\r\nContent-Type: text/html; charset=utf-8″)){ //sukces
Ale nie do końca wiem co dokładnie. Jak dodałem tele tak jak mi się wydawało że trzeba to treść zniknęła, ale telefon dotarł. Więc sukces połowiczny :)
Witam. Świetny, prosty skrypt. Działa, tak jak powinien. Wielkie dzięki, za jego udostępnienie .
Mam takie małe pytanie, czy jest możliwość rozbudowy tego skryptu o funkcję wysyłania plików .jpg – to znaczy wypełniam wszystkie pola, klikam w „przeglądaj” wybieram plik jpg. np zdjecie.jpg i wtedy wysyłam. Oczywiście całość wysyłana na adres e-mail …
Bardzo proszę o pomoc w modyfikacji i rozbudowie tego skryptu.
Pozdrawiam
skrypt zawiera błąd
Fatal error: Call to undefined function: filter_var() in /var/www/sites/yoyo.pl/m/e/mefedronczechy/mail.php on line 55
Skrypt NIE zawiera błędu. W wymaganiach jest napisane, że musisz używać php5.
Jak to zrobić musisz dowiesz się z dokumentacji serwera.
Przepraszam, bardzo – zapisałem plik w php5 i wszystko działa jak należy.
Polecam skrypt i pozdrawiam.
Cieszę się ;)
Pozdrawiam.
jednak nie mogę oprzeć się wrażeniu że najczęściej zwracanym komunikatem jest -”przepraszamy za chwilowy błąd w połączeniu” …. jednak to jest chyba wina po stronie serwera a nie skryptu ….
Cześć, mam taki problem i nie wiem o co chodzi. Wgrałem formularz na stronę do katalogu /formularz i mam pustą białą stronę :|
Może wiecie o co kaman ?
Przy obecnych ustawieniach serwera, nie wykonuje skryptów php w plikach html. Najprościej – zmień rozszerzenie strony na .php
Najlepiej – zobacz w pomocy serwera, jak zmienić, żeby php wykonywało się w plikach html
hej Websta,
Super skrypt. Wszystko działa pięknie. Bardzo jestem Ci wdzięczny.
Mam jednak jedno pytanie – nie potrafię tego rozgryźć.
Stronkę mam zrobioną na divach – jeden display:block, inne display:none. U góry jest menu które zmienia dane divy z none na block jak się na nie kliknie. Proste menu. Jednak przez to – mam cały czas jeden adres w przeglądarce. I tu problem z formularzem.
Po jego wysłaniu, wracam na stronkę główną – czyli diva na którym mam block (czyli zakładka home). Czy masz może jakiś pomysł jak powrócić na diva który jest początkowo: none?
Przy menu mam funkcje, np: onclick=”showContent(‘Kontakt’);” ale w php po wykonaniu skryptu tego nie ujmę bo nie mam jak.
próbowałem pozmieniać: $_SERVER['REQUEST_URI'], na rożne wartości ale nic to nie daje.
Bardzo prosiłbym o pomoc. Rozgryzam to już 2 dzień…
Pozdrawiam
Najprostsze możliwości są 3. Jeśli ten skrypt, który używasz reaguje na kotwice np. #kontakt to po sprawie lub zmień na taki co to obsługuje. Druga opcja to użycie cookies do zapamiętania otwartej zakładki. Trzecia moim zdaniem najlepsza to użycie ajaxu.
Websta – na prawdę niezły jesteś :)
Czyli w przypadku kotwicy, muszę umieścić wpis:
$_SERVER['REQUEST_URI'].’#kontakt’,
w mail.php
? Tak to powinno wyglądać?
Tak by to miało wyglądać, ale oczywiście Twoje „zakładki” muszą na to reagować. Ogólnie kotwice to pożądana sprawa przy takim rozwiązaniu jak używasz, gdyż np.mogę przesłać znajomemu link do konkretnej części strony, zamiast tłumaczyć mu gdzie ma klikać.
hmm no niestety nie działa to tak jak powinno…
menu działa na zasadzie (jest kilka takich):
Kontakt
strona jest złożona z kilku divow:
Funkcja js:
function showContent(whatever) {
switch(whatever) {
case „Kontakt”:
document.getElementById(‘srodek’).scrollTop=0;
document.getElementById(‘Home’).style.display=’none’;
document.getElementById(‘Kontakt’).style.display=’block’;
break;
itd.
Dlatego nie wiem jak to odnieść do danego diva, bo jest na nim display:none. Kotwica nie zadziała.
nie wyslalo sie wszystko:
menu:
” a class=”menu” href=”#kontakt” onclick=”showContent(‘Kontakt’);”>Kontakt< / a"
divy:
"div id="Kontakt" style="display:none""
No to masz dalej te same wyjścia ;) Najlepiej zmienić/napisać tabsy reagujące na kotwice lub/i użyć ajaxu do wysyłania formularza :) Ajax w jQuery jest bardzo prosty, poczytaj pokombinuj i będzie śmigać, ten formularz świetnie się do tego nadaje.
Formularz super, ale mam jeden problem
Do wyświetlania i zmiany contentu używam rozwiązana typu ajax, tak jak widać tu
http://aurongroup.pl/test_form/kariera.php. .Problem tkwi w tym, że
jak nacisnę przycisk „wyślij” to cała strona się przeładowuje i
wyświetla się tylko podstrona w której znajduje się formularz, bez
tego menu po lewej i tła. Jjest taka możliwość,
żeby po naciśnięciu przycisku „wyślij”, po którym dostaje się
informacje o powodzeniu wysłania formularzu lub listę błędów,
przeładowany formularz pozostał w prawej ramce? Mam nadzieję, że się
jasno wyraziłem:) Z góry dziękuje za odpowiedz.
Najlepiej użyj też ajaxu do wysyłania formularza.
Szkopuł w tym tkwi, że nie wiem jak to zrobić, prosiłbym o naprowadzenie mnie jak to zrobić:)
serwer home, wstawiłem wszystkie pliki ( title strony działa ) jednak biały ekran
witam.
chciałbym zrobić coś takiego że gdy przychodzi mi mail abym od razu widział nick.
już kilka razy próbowałem zmieniać kod w pliku mail lecz nie działa ; ( pomocy
skrypt działa, ale mam problem z polskimi literami. gdzie należy wstawić kodowanie? zamiast polskich znaków wyświetlają się krzaczki w nagłówkach formularzy i tak samo w mailu jaki sobie sam wysłałem dla testu z tego formularza. poproszę o pomoc.
Na cba.pl nie działa
Poprawka działa na cba.pl :)
Tylko trzeba kodowanie poprawić pod strone bo krzaczki są ;)
dziwne mam problem
Ściągnąłem paczkę zip która była umieszczona z całym formularzem odpalam index.html by zobaczyć jak wszystko działa a tu niespodzianka mam białe tło i nic się nie załączając. Czy ja coś źle robię bo już nie wiem?? Panie Autor proszę o wypowiedź :P
Piszę jeszcze raz.
witam.
chciałbym zrobić coś takiego że gdy przychodzi mi mail abym od razu widział nick.
już kilka razy próbowałem zmieniać kod w pliku mail lecz nie działa
proszę o pomoc ; ( pomocy
w nagłówku ma być nick.
pozdr
hej Websta ;D !! siemnako
ej podczas wysyłania formularza nie pojawiają się polskie litery , co już wcześniej pisałem.
Kododanie strony mam ustawione na : charset=iso-8859-2 ….. także nie wiem jak to ustawić zeby grało, może ktoś mi pomóc ?
pozdro
Witam,
zajmuję się programowaniem m.in. w Delphi, C++, Java, Python, a także od jakiegoś czasu uczę się PHP. Prawdę mówiąc dawno temu zaczynałem zabawę z PHP 4, ale jakoś przerwałem naukę i teraz muszę sobie większość rzeczy poprzypominać. Pomimo tego dość dobrze potrafię zinterpretować kod napisany w PHP, lecz w przypadku Twojego skryptu wysyłającego dane z formularza, to mam problemy z jego uruchomieniem.
Używam wirtualnego serwera APACHE 2 z PHP 5, serwer dodatkowo skonfigurowałem tak, aby interpretował kod PHP w plikach HTML, a pomimo tego nie działa mi to. Wywala mi takie błędy:
Notice: Undefined index: nick in C:\APACHE\_WWW\mail.php on line 32
Notice: Undefined index: mail in C:\APACHE\_WWW\mail.php on line 33
Notice: Undefined index: temat in C:\APACHE\_WWW\mail.php on line 34
Notice: Undefined index: tresc in C:\APACHE\_WWW\mail.php on line 35
Natomiast jak kliknę w ‘Wyślij’ to zwraca błąd:
Fatal error: Call to undefined function filter_var() in C:\APACHE\_WWW\mail.php on line 55
Proszę o jakąś radę, co mogę jeszcze zrobić w tym kierunku.
Z góry dziękuję i pozdrawiam
ms1977
Witam, świetny skrypt którego używam, ale mam pytanie, jak zwiększyć czcionkę po otrzymaniu maila wręcz jest nieczytelny z racji małej czcionki. Jak ją zwiększyć i gdzie tego szukać?
tu ci nikt nie odpowie, od pół roku się pytam jak ustawić polskie znaki w formularzu ;)
nie działa
Czy formularz może wysłać wiadomość na dwa adresy mailowe? a jeśli tak to gdzie mam dopisać drugi?
Próbowałem dodać nową linie kodu, ale nie dostałem maila