Skocz do zawartości


Zdjęcie

Wysłanie wiadomości w ankiecie

ankieta

  • Zaloguj się, aby dodać odpowiedź
3 odpowiedzi w tym temacie

#1 tokasmart

tokasmart
  • Użytkownicy
  • 38 postów

Napisano 18 lipiec 2014 - 16:32

Witam

 

Mam strone na WP do której dodałem ankiete -> po jej wypełnieniu, mamy przycisk wyślij ankiete i chciałbym żeby po wciśnieciu jego został automatycznie wysyłany mail ze strony na mój mail.

 

Teraz gdy kliknę wyślij ankiete, otwiera mi thunderbirda z wypełnioną wiadomością - wiem że trzeba strone w php zrobić, ale nie wiem czy tutaj błędu nie popełniłem, bo pierwszy raz to robię - NIŻEJ MOJA MINI STRONA W PHP.

<?php
if (count($_POST))
{
	////////// USTAWIENIA //////////
	$email = 'info@avon-okreg107.pl';	// Adres e-mail adresata
	$subject = 'Ankieta zamawiania';	// Temat listu
	$message = 'Dziękujemy za wysłanie formularza';	// Komunikat
	$error = 'Wystąpił błąd podczas wysyłania formularza';	// Komunikat błędu
	$charset = 'iso-8859-2';	// Strona kodowa
	//////////////////////////////
	
	$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
{
?>
<form action="mailto:info@avon-okreg107.pl?subject="Ankieta zamawiania" method="post" enctype="text/plain"><div>
<!-- Podstawowe pole tekstowe -->
<center>Jakie będziesz miała zamówienie w Katalogu 12/2014?</center></p>
<center><input type="checkbox" name="Zamawiam " value=" do 160zl" />planuje zamówienie do 160zl<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 250zl" />planuje zamówienie do 250zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 500zl" />planuje zamówienie do 500zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" ponad 1000zl" /> planuje zamówienie na ponad 1000zł<br /></center>
<center>&#160;<input type="submit" value="Wyślij formularz" /> <input type="reset" value="Wyczyść dane" /></center>
</form>
<?php
}
?>

Niżej to co zrobiłem w cms:

<FORM ACTION="mailto:info@avon-okreg107.pl?subject=Ankieta zamawiania" METHOD="Post" enctype="text/plain"><div>
<center>Jakie będziesz miała zamówienie w Katalogu 12/2014?</center></br>
<center><input type="checkbox" name="Zamawiam " value=" do 160zl" />planuje zamówienie do 160zl<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 250zl" />planuje zamówienie do 250zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 500zl" />planuje zamówienie do 500zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" ponad 1000zl" /> planuje zamówienie na ponad 1000zł<br /></center>
<center>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<input type="submit" value="Zagłosuj w ankiecie" /></center>
</div></form> 

REASUMUJĄC - BARDZO PROSZĘ BARDZIEJ DOŚWIADCZONYCH KOLEGÓW O PODPOWIEDZENIE CO ROBIĘ ŹLE I DLACZEGO WŁ. SIĘ PROGRAM POCZTY ZAMIAST WYSŁAĆ PRZEZ MÓJ SERWER WIADOMOŚĆ NA MOJĄ SKRZYNKE POCZTOWĄ.

 


  • 0


#2 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

Napisano 18 lipiec 2014 - 19:09

Otóż robisz to źle:

FORM ACTION="mailto:info@avon-okreg107.pl?subject=Ankieta zamawiania" 

Akcja formularza musi wskazywać na skrypt, który wywołuje funkcję mail() a nie na przeglądarkowe wywołanie mailto, które zwyczajnie otwiera twój domyślny program pocztowy i pozwala wysłać mail.

Dodatkowo dam Ci dokumentację funkcji mail() w PHP
http://php.net//manu...nction.mail.php

Nie wiem po co base'ujesz temat i wywołujesz tę funkcję w tak dziwny sposób, być może zadziała bo to jakiś wklejony kod a nie wiem jak przekazywane nagłowki zakodują tę wiadomość (normy RFC nie znam na pamięć). O ile host z którego wysyłasz mail nie jest dodany do list spamerskich to wiadomość powinna dojść (fakt ten możesz odczytać w logach serwera). Sama wiadomość ułożona przez taki formularz będzie raczej dziwne sformatowana...

 

Warto jest też przefiltrować input z formularza, nigdy nie wiesz co ktoś mądrzejszy może ci wcisnąć w te pola i wysłać.


  • 0

#3 tokasmart

tokasmart
  • Użytkownicy
  • 38 postów

Napisano 18 lipiec 2014 - 22:43

Dzięki za odpowiedź.

 

Resumując Janusz można stwierdzić jednoznacznie co mam podmienić/dodać, albo chociaż co mogę spróbować?


  • 0

#4 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

Napisano 19 lipiec 2014 - 07:18

Jeżeli plik zawierający kod

<?php
if (count($_POST))
{
	////////// USTAWIENIA //////////
	$email = 'info@avon-okreg107.pl';	// Adres e-mail adresata
	$subject = 'Ankieta zamawiania';	// Temat listu
	$message = 'Dziękujemy za wysłanie formularza';	// Komunikat
	$error = 'Wystąpił błąd podczas wysyłania formularza';	// Komunikat błędu
	$charset = 'iso-8859-2';	// Strona kodowa
	//////////////////////////////
	
	$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
{
?>
<form action="mailto:info@avon-okreg107.pl?subject="Ankieta zamawiania" method="post" enctype="text/plain"><div>
<!-- Podstawowe pole tekstowe -->
<center>Jakie będziesz miała zamówienie w Katalogu 12/2014?</center></p>
<center><input type="checkbox" name="Zamawiam " value=" do 160zl" />planuje zamówienie do 160zl<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 250zl" />planuje zamówienie do 250zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" do 500zl" />planuje zamówienie do 500zł<br /></center>
<center><input type="checkbox" name="Zamawiam " value=" ponad 1000zl" /> planuje zamówienie na ponad 1000zł<br /></center>
<center>&#160;<input type="submit" value="Wyślij formularz" /> <input type="reset" value="Wyczyść dane" /></center>
</form>
<?php
}
?>

Nazywa się np test.php to formularz musi wskazywać na
 

<form action="test.php"

To jest przypadek z zastosowaniem ścieżki względnej rzecz jasna. Przetestuj to sobie poza wordpressem na jakimś prostym skrypcie. Jeżeli ten skrypt jest jakoś zintegrowany z wordpress to zapewne musisz wskazać na plik index.php z jakimiś parametrami (tutaj musisz sam to odnaleźć).

Wynik tego skryptu w przypadku udanego wysłania formularza da Tobie wynik wywołania funkcji mail() - zmienną $message lub $error.
 


  • 0



Również z jednym lub większą ilością słów kluczowych: ankieta

Użytkownicy przeglądający ten temat: 3

0 użytkowników, 3 gości, 0 anonimowych