Wysyłanie formularza


(Herbleliwa) #1

(Pablo_Wawa) #2

Odbiorcą danych z formularza jest zazwyczaj ten sam lub inny skrypt. Definiuje się to w znaczniku action formularza. U Ciebie jest

co oznacza, że dane odbierze ten sam skrypt. Jak dane mają trafić do innego skryptu (np. analiza.php ), to musisz użyć takiego wpisu

znacznik onsubmit zawiera kod w JavaScript przetwarzający dane formularza - jeśli mają być wysłane, funkcja (tu validate ) zwraca true, a jeśli nie, to false - stosuje się to do walidacji poprawności wprowadzonych danych. Normalnie nie da się wysłać danych z formularza do dwóch skryptów (adresatów) - ale możesz to sam zrobić w tym skrypcie, co odbiera te dane - on wtedy wyśle dodatkowo te otrzymane dane do innego skryptu (metodą GET - jako parametry wywołania - jest to proste, metodą POST nie jest to banalne - można np. użyć bibliotekę cURL). Chyba da się wysłać (nie testowałem tego nigdy, stąd "chyba") - po stronie klienta - dane do 2 różnych formularzy, ale trzeba trochę kodu w JavaScript - być może zadziała taki kod (umieść go w w funkcji validate() zamiast instrukcji (linii z ) return):

document.form1.submit();

  document.form1.action='inny_skrypt.php';

  document.form1.submit();

a jeśli to nie zadziała, to trzeba stworzyć drugi formularz (np. form2) z takimi samymi polami, przepisać je i wysłać po wysłaniu tego pierwszego.

Można też to zrobić przy użyciu pływającej ramki (IFRAME) - ale to dłuższy temat i nie będę go rozwijał.


(Herbleliwa) #3

Ok

Na teraz dziękuję za zainteresowanie się tym problemem. Spróbuję przez to przebrnąć.

Chciałbym dodać że w necie znalazłem podobny skrypt który zawierał dodatkowo plik o nazwie

config.php

<?php

// Change the 4 variables below

$yourName = 'Zd-z'; // może być puste

$yourEmail = 'xxxx@wp.pl'; // adres, na który będą przychodzić wiadomości

$yourSubject = 'wiadomość w sprawie|';

$referringPage = 'http://mojastrona.org.au/c/';

?>

Czy chodzi właśnie o ten (lub podobny) dodatkowy plik? I druga prawdopodobna kwestia : Czy w tym pliku można zadeklarować dodatkowych odbiorców maila, czy też należy zrobić coś podobnego do takiego rozwiązania: 1)

2) zmieniamy podobny zapis jak poniżej

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

na taki 3)

$mails = explode("; ", $email);

for ($i = 0; $i< count($mails); $i++)

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

jak to "wcisnąć" to tego mojego formularza

pozdrawiam, licząc na odpowiedź

Zdz


(Grzelix) #4

@Pablo_Wawa trochę się rozpędziłeś, z tego co ja wyczytałem to pytanie jest o wysłanie do dwóch adresatów, nie skryptów.

Wracając do tematu, to na początek radziłbym @ZhLeliwa byś najpierw co nieco poczytał i z orietował się w temacie za nim coś będziesz chciał nakodzić.

Na razie wyciągasz kawałki kodu na chybił trafił z nadzieją że to może to.

w pierwszym poście masz kompletny szablon formularza z walidacją.

Natomaist w tym kawałku brakuje ci po prostu funkcji która wyśle otrzymane dane.

else{


 ?>

| Thank you for contacting, we will get back to you within 24 hours or next working day.. |
|   |
| |

<?php }}?>[/code]

poniżej link gdzie masz wysyłanie maila z użyciem php (drugi listning)

http://webmade.org/porady/wysylanie-wia ... il-php.php

oraz pomocne linki na temat funkcji mail.

Wysyłanie do dwóch adresatów - podajesz dwa maila oddzielając je znakiem średnika


(Herbleliwa) #5

Dziękuję grzelix , i Pablo_Wawa , za naprowadzenie na rozwiązanie

Znalazłem też w podanych linkach bardziej "łopatologiczne" wytłumaczenie dodawania drugiego i dalszych odbiorców maila.

Oto one:

// multiple recipients (note the commas)

$to = "somebody@example.com, ";

$to .= "nobody@example.com, ";

$to .= "somebody_else@example.com";

sprawdziłem - działa Pozdrawiam wszystkich życząc spokojnego wieczoru Zdz -- Dodane 11.06.2012 (Pn) 12:14 -- Witam wszystkich raz jeszcze. Skrypt o którym wspomniałem w pierwszym moim poście działa.Wysyła maile z potrzebnymi polami. Jednak w trakcie walidacji kodu całej strony przy pomocy mozillowskiej Tidy wyskakuje jednak mi błędne umieszczenie skryptu JavaScript który wyprintowywuje komunikat w przypadku błędnego wpisania captcha. Poniżej fragment kodu formularza o którym mowa ( o fragmencie /Error: Kod walidacji/ )

<?php session_start();


		if(isset($_REQUEST['Submit']))

		{

			$name = $_REQUEST['name'];

			$email = $_REQUEST['email'];

			$comment = $_REQUEST['comment'];



// code for check server side validation

if(empty($_SESSION['6_letters_code'] ) ||

	  strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)

	{


		//Note: the captcha code is compasuperscript-red case insensitively.

		//if you want case sensitive match, update the check above to

		// strcmp()


   print("");

	}else

	{


	$adresat = "pierwszy@wp.pl, ";

	$adresat .= "drugi@wp.pl, "; //pod te adresy zostanie wysłana wiadomosc


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

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

	$header = "From:$_POST[name] <$_POST[email]> \nContent-Type:".

			' text/plain;charset="iso-8859-2"'.

			"\nContent-Transfer-Encoding: 8bit";

	//$header .= "Reply-To: webmaster@example.com\r\n";

	if (mail($adresat, 'List ze strony', $comment, $header))

		echo '
działa';

	else 

		echo '
NIE wysłano maila!';


 ?>

| Thank you for contacting, we will get back to you within 24 hours or next working day. |
|   |

<?php }} ?> [/code]

Cała treść skryptu JavaScript wyświetla się ponad znacznikiem

[code]/code]

I stąd wynika moja prośba: czy można to jakoś wygładzić? Czyli umieścić ten kod JavaScript tak aby walidacja całej strony była poprawna. Proszę o rozwiązanie.

Poza tym mam jeszcze jedną prośbę.

Po wysłaniu maila ukazuje się też na samej górze strony komunikat z tabeli Thank you for contacting, we will get back...

Czy można go jakoś umieścić w dajmy na to "rozsuwanym" (ukrytym normalnie) div-ie ponad samym formularzem?

Strona ma 3 div-y a komunikat wyświetla się w górnej warstwie.

W stosunku do pierwotnego kodu, jaki jest w pierwszym moim poście ten zamieszczony teraz ma wycięty z tabeli input type="button" value="Exit". Czy to ma jakiś wpływ na takie wyświetlanie w walidacji błędu związanego z JavaScript?

Dla mnie wystarczy jak wyświetli sie tylko komunikat o wysłaniu maila "Thank you for contacting..."

Z góry dziękuję za pomoc, i pozdrawiam

Zdz

Dzień dobry... dla wszystkich

Podbiję gnębiący mnie temat ponieważ nie daje mi to spokoju, i uściślę problem kawałkiem wyświetlanego kodu po walidacji tildą. Cały kod formularza znajduje się w pierwszym poście.

[code]