Problem z formularzem php i walidacja


(Dareq) #1

witam,

otóz zaczynam przygode z php i mam napisany formularz jest on umieszczony w pliku kontakt.html jest do niego plik form.php - zrobiłem ze pojawiaja sie informacje o wysłaniu formularza na nowej stronie wynikowej która jest kopią strony kontakt. (formularz juz na niej nie jest widoczny)

maile dochodza bez problemu na skrzynke problemem jest walidacja za kazdym razem po kliknieciu wyslij idzie niewazne czy jest jakas tresc czy nie czy wypełniony jest formularz czy nie i to samo dotyczy adresu e-mail:((((. czy ktos mógłby pomóc i zobaczyc ten kod gdzie jest bład -interesuje mnie aby informacje o błedach pojawiały sie na tej samej stronie co formularz i informacja o wysłąniu formularza tez na niej- oto kod:

kontakt.html:

mail.gif

Nazwa  (Wymagane)

E - mail (Wymagane)

Www   (Opcjonalnie)

Tutaj wpisz tre¶ć zapytania...

form.php:

?php

if (count($_POST))

{

$email = 'ja@mójmail.pl';

$subject = 'Temat';

$message = 'Dziękujemy za wysłanie formularza.';

$error = 'Wystąpił błąd podczas wysyłania formularza';

$charset = 'iso-8859-2';

$head =

"MIME-Version: 1.0\r\n" .

"Content-Type: text/plain; charset=$charset\r\n" .

"Content-Transfer-Encoding: 8bit";

$body = '';

foreach ($_POST as $name = $value)

{

if (is_array($value))

{

for ($i = 0; $i count($value); $i++)

{

$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) .

"\r\n";

}

}

else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";

}

echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;

}

else

{

?

?php

}

?


(system) #2

Zerknij na ten przykład, może coś Ci pomoże :wink:


(Dareq) #3

no ok fajnie ogladałem go -dzieki, ale mnie nurtuje gdzie w przykładzie który podałem jest bład. próbuje go na rózne sposoby i tak dalej nie jest tak jak powinno:(


(Sebcioz) #4

Nie za bardzo rozumiem Twojego toku rozumowania i mogę się mylić:

<?php

if (count($_POST)) { //warunek zawsze spełniony, przycisk submit wysyła zmienną post

$email = 'ja@mójmail.pl';

$subject = 'Temat';

$message = 'Dziękujemy za wysłanie formularza.';

$error = 'Wystąpił błąd podczas wysyłania formularza';

$charset = 'iso-8859-2';

$head =

"MIME-Version: 1.0\r\n" .

"Content-Type: text/plain; charset=$charset\r\n" .

"Content-Transfer-Encoding: 8bit";

$body = '';

foreach ($_POST as $name => $value) {

if (is_array($value)) { // też spełniony - submit

for ($i = 0; $i < count($value); $i++) {

$body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n"; //nie rozummiem co chciałeś przez to wyrazić

}

} else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n"; //jak wyżej

}

echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error; //zawsze wyśle maila i będzie ok

} else

{

?>

//to nie wiem po co...

<?php

}

?>


(Dareq) #5

ok całkowicie pozruciłem ten formularz ale kozrystając ze skryptu Pumy , jak zrobić dodać w nim aby mail dochodził z polskimi czcionkami? strona ma charset=iso-8859-2 ale zarówna w skrypcie php jak i samej tersci wiadomosci krzeczki.

Przykład:

Imiê - a¶æ¿ñ / E-mail - nico@nic.pl

Tre¶æ - blê¶æ ¿lê ¼ê

prosze pomózcie!:wink: