Strona 1 z 1

[PHP] Prośba o pomoc przy formularzu kontaktowym

: pn cze 15, 2009 11:15 pm
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.

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

: wt cze 30, 2009 11:54 am
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.

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

: pt lip 17, 2009 7:41 am
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]

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

: pt lip 17, 2009 7:30 pm
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 ;)

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

: pt lip 17, 2009 11:24 pm
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]

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

: pt wrz 11, 2009 1:08 am
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ę.