Formularz Kontaktowy w PHP


(Nesq13) #1

Cześć!

Chcę zrobić formularz kontaktowy w PHP, który by na mój mail wysyłał wiadomości.

W html wygląda to tak:

Treść wiadomości*

Pola oznaczone gwiazdką * są wymagane.

[/code]

Napisałby mi ktoś skrypt php, który by ten formularz “ożywił”?

Będę bardzo wdzięczny.


(tomilipin) #2

Ten skrypt napisałem chyba z 6 lat temu. Nie jest doskonały ani super-bezpieczny. Warto poprawić IFy.

Właściwie jest to gotowe rozwiązanie (trzeba tylko pola przesyłane POSTem dopasować) ale przydałyby mu się jeszcze pewne udoskonalenia :wink: Zatem do dzieła panie webmasterze :slight_smile:

@$temat=$_POST['temat'];

	@$wiadomosc=$_POST['wiadomosc'];

	@$e_mail=$_POST['e_mail'];

	@$podpis=$_POST['podpis'];


	if(isset($_POST['wysylanie'])) {


  			if($temat and $podpis and $wiadomosc) {


     			if ($e_mail) {

         			$matryca = "/^([[:alnum:]]([[:alnum:]_\.:-])?)+@([[:alnum:]][[:alnum:]_\.:-]+[[:alnum:]]\.)?((([[:alnum:]]([[:alnum:]_\.:-]{1,59})?[[:alnum:]])|[[:alnum:]])\.)([a-z]{2,4}|[0-9]{1,3})$/i";

         			$e_mail = strtolower($e_mail);


         			if(preg_match($matryca, $e_mail)==FALSE) {

         				$error = 1;

            			print 'Niepoprawny adres e-mail';

         			}

     			}


     			if (@$error!=1) {

              		$temat = "[tomilipin] ".$temat;

              		$naglowki = "From: www_tomilipin \n";

              		$naglowki .= "Reply-To: ".$podpis." <".$e_mail.">\n";

              		$naglowki .= "Content-type: text/plain; charset=utf-8\n";

              		$naglowki .= "X-Mailer: tomilipin.mail\n";

              		@mail("nesko13@jakis.serwer.com", $temat, $wiadomosc, $naglowki);

              		print 'Wiadomość wysłana';

              		unset($temat, $wiadomosc, $e_mail, $podpis);

     			}

  			}

	}

obsługiwał taki formularz (wpisywany przez print w PHP):

| Temat: | |
| Wiadomość: | ‘.$wiadomosc.’ |
| Twój e-mail: | |
| Podpis: | |
| |

[/code]

Dostosuj do własnych potrzeb. Aha, i pamiętaj, że dla PHP ważny jest name a nie id, bo już widzę braki w Twoim formularzu.


(skandyn) #3

Trzeba zamienić tylko email na Twój.

<?php

// sprawdzamy, czy zmienna $submit jest pusta

if (empty($_POST[‘submit’])) {

// wywietlamy formularz

echo "

Twoje imię i nazwisko:

Twój E-mail:

Temat listu:

Treść listu:

";

}

// sprawdzamy, czy zmienne przesłane z formularza nie sš puste

elseif (!empty($_POST[‘imie’])&&!empty($_POST[‘email’])&&!empty($_POST[‘temat’])&&!empty($_POST[‘tresc’]) ) {

// jeżeli powyższy warunek jest spełniony tworzona jest wiadomoć

// zmienna $message zawiera treć wiadomoci

$message = "Temat wiadomości: \n$_POST[temat]\nTreść wiadomości: \n$_POST[tresc]\nWysłał: $_POST[imie]\ne-mail: $_POST";

// zmienna $header zawiera przede wszystkim adres zwrotny

$header = "From: $_POST[imie] <$_POST>";

// funkcja mail() za pomocš której wiadomoć zostanie wysłana

@mail(“mzarze@gmail.com”,“Wiadomość ze strony WWW”,"$message","$header")

or die(‘Nie udało się wysłać wiadomości’);

// wywietlenie komunikatu w przypadku powodzenia

echo "

Wiadomość została wysłana poprawnie!
";

}

// lub w przypadku nie wypełnienia formularza do końca

else echo "Wypełnij wszystkie pola formularza! ";

?>

Pozdrawiam.