[PHP] Prośba o pomoc przy formularzu kontaktowym

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
cachaito
Posty: 12
Rejestracja: śr kwie 02, 2008 7:27 pm

[PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: cachaito »

Witam serdecznie! Mam taki formularz:

Kod: Zaznacz cały

<form action="serwer/mailer.php" method="post">
		<p>Podaj swoje imię:</p>
		<input type="text" name="fromname" /><br />
		<p>Podaj swój e-mail:</p>
		<input type="text" name="fromemail" /><br />
		<p>Temat:</p>
		<input type="text" name="subject" /><br />
		<p>Treść wiadomości:</p>
		<textarea name="message" cols="30" rows="6"></textarea><br />
		<p>Do kogo?</p>
		<select name="to" size="1">
			<optgroup label="Wybierz odbiorcę:">
				<option value="[email protected]">adres1</option>
				<option value="[email protected]">adres2</option>
			</optgroup>
		</select><br />
		<p>
		<input type="checkbox" name="zgoda1" value="1" />
		Wyrażam zgodę na przetwarzanie moich danych w formularzu<br />
		<input type="checkbox" name="zgoda2" value="1" />
		Potwierdzam, że dane wypełniłem prawidłowo.
		</p>
		<input type="submit" value="Wyślij!" />
</form>
oraz kod php

[php]
<?php
if(!$_POST['zgoda1']=='1'){


echo "Nie potwierdzono: Wyrażam zgodę na przetwarzanie moich danych w formularzu";

}
elseif(!$_POST['zgoda2']=='1'){

echo "Nie potwierdzono: Potwierdzam, że dane wypełniłem prawidłowo";

}else{



class MicroMailer{
var $to = "";
var $subject = "";
var $message = "";
var $fromName = "";
var $fromEmail = "";
var $header = "";
var $type = "text/plain";
var $characterSet = "utf-8";


function send(){
$this->createHeader();
if (@mail($this->to,$this->subject,$this->message,$this->header)){
return true;
} else {
return false;
}
}

function createHeader(){
$from = "From: $this->fromName <$this->fromEmail>\r\n";
$replay = "Reply-To: $this->fromEmail\r\n";
$params = "MIME-Version: 1.0r\n";
$params = "Content-type: $this->type; charset=$this->characterSet\r\n";

$this->header = $from.$replay.$params;
return $this->header;
}

}


$mailer = new MicroMailer();

$mailer->to = isset($_POST["to"]) ? $_POST["to"] : "";
$mailer->fromName = isset($_POST["fromname"]) ? $_POST["fromname"] : "";
$mailer->fromEmail = isset($_POST["fromemail"]) ? $_POST["fromemail"] : "";
$mailer->subject = isset($_POST["subject"]) ? $_POST["subject"] : "";
$mailer->message = isset($_POST["message"]) ? $_POST["message"] : "";
if ($mailer->send()) {
echo "Wiadomość wysłana!";
} else {
echo "Błąd podczas wysyłania wiadomości!";
}
}
?>
[/php]

Wszystko chodzi ślicznie, tylko nie wiem jak dodać do niego dwie ważne dla mnie funkcje:

- sprawdzanie, żeby pole fromEmail było weryfikowane

- sprawdzanie, czy użytkownik uzupełnił wszystkie pola

Znawców php bardzo proszę o pomoc.
Keph
Nowy
Nowy
Posty: 23
Rejestracja: śr gru 06, 2006 10:48 pm
Kontakt:

Re: [PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: Keph »

cachaito pisze:Witam serdecznie! Mam taki formularz:
- sprawdzanie, żeby pole fromEmail było weryfikowane
Polecam wyszukanie w googlach: ("regular expressions"|regexp) email
Do smaku dołożyć jeszcze można php - od razu wyskoczy od cholery różnych poręcznych metod na sprawdzenie, czy e-mail wygląda tak, jak powinien ;)
cachaito pisze:- sprawdzanie, czy użytkownik uzupełnił wszystkie pola
Np. funkcja empty($zmienna). Ewentualnie isset($zmienna), tudzież is_null($zmienna), bądź sprawdzenie, czy zmienna jest równa pustemu stringowi (""), w zależności od tego, z jakimi polami masz do czynienia.
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

Re: [PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: slawko »

Co do sprawdzenia czy pola zostały wypełnione

[php]<?php
if((!$temat) || (!$email) || (!$tresc)){
echo "pola nie zostały prawidłowo wypełnione";
}
?>[/php]

Sprawdzanie adresu e-mail:

[php]<?php
if(!ereg("^.+@.+..+$", $_POST['email'])){
echo "adres e-mail jest nieprawidłowy";
}


?>[/php]
zakręcony
Nowy
Nowy
Posty: 127
Rejestracja: śr mar 26, 2008 7:33 pm

Re: [PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: zakręcony »

1 kod to chyba nie zadziała na register_globals off
2 czy to: [email protected] jest adresem email, bo w/g kodu jest ;)
slawko
Nowy
Nowy
Posty: 127
Rejestracja: ndz sty 23, 2005 6:43 pm
Kontakt:

Re: [PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: slawko »

Przed sprawdzeniem zmiennych należy je przesłać np: method="post"

[php]<?php
$temat=$_POST["temat"];
$email=$_POST["email"];
$tresc=$_POST["tresc"];

?>[/php]

[php]<?php
("^.+@.+..+$", $_POST['email'])
?>[/php]

ten sposób działa bez problemu,
ale można go jeszcze zmodyfikować
np:


[php]<?php
^[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)*@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-]+)*(.[a-zA-Z]{2,4})

?>[/php]
Keph
Nowy
Nowy
Posty: 23
Rejestracja: śr gru 06, 2006 10:48 pm
Kontakt:

Re: [PHP] Prośba o pomoc przy formularzu kontaktowym

Post autor: Keph »

Ja bym wtrącił jeszcze taką uwagę, głównie do postu kolegi zawierającego funkcję ereg(). Należy mieć na uwadze, że ta funkcja zostanie całkowicie wycofana z następnej wersji pehapa i korzystania z niej zasadniczo nie poleca się.
ODPOWIEDZ