Wysyłanie formularza na e-mail

0

Witam mam stronę kontakt.html , na której mam cały swój layout , różne treść itd. itd.

Umieściłam w body formularz, który umożliwia wysłanie zapytania przez stronę , na mój adres email z wykorzystanie skryptu w PHP .

formularz z pliku *.html:

 <div>
   <form action="skrypt.php" method="post">
      <input type="text" name="email" /><br />
      <textarea name="content"></textarea>
      <input type="submit" value="wyślij" />
   </form>
</div>

i plik skrypt.php :

<?PHP
   $adresat = '[email protected]';    // pod ten adres zostanie wysłana wiadomosc
   @$email = $_POST['email'];
   @$content = $_POST['content'];
   $header =    "From: [email protected] \nContent-Type:".
         ' text/plain;charset="iso-8859-2"'.
         "\nContent-Transfer-Encoding: 8bit";
   if (mail($adresat, 'List ze strony', $content, $header))
      echo '<p>działa</p>';
   else
      echo '<p><b>NIE</b> wysłano maila!</p>';
?>

Wszystko działa z tym że chce uniknąć żeby po kliknięciu przycisku 'Wyślij' otwierała się pusta strona z jedynie tekstem : działa . Czy można zrobić tak żeby po wysłaniu formularza zostawać na tej samej stronie : kontakt.html , ewentualnie żeby wyskakiwał jakiś pop-up, okienko z komunikatem Wysłano i tyle ? Nie umiem niestety programować, ledwo udało mi się uruchomić żeby działało to wysyłanie... Dziękuję serdecznie za pomoc.

Anika

1

Zamiast "echo działa" napisz:
echo "<script>document.location.href='strona_do_ktorej_chcesz_przejsc.html';</script>";
Lub:
echo "<script>alert('Wysłano !'); document.location.href='strona.html';</script>";

Na przyszłość: takie tematy do newbie ;-)

0

Fajnie , dziękuję bardzo. Jeszcze dwie kwestie :) Nie mam polskich znaków i dwa, jak zmienić ten warunek IF, żeby nie można było wysłać formularza gdy pole adresata i treści jest puste ?? i najlepiej również wystosować odpowiedni komunikat :)

Pozdrawiam,
Anika

1
if (empty($_POST['email'])){
 echo "Pole E-Mail jest puste !";
} elseif (empty($_POST['content'])) {
 echo "Pole zawartość jest puste !";
} else {
 // Wysyłanie, itp.
}

Ewentualnie w JS:

if (empty($_POST['email'])){
 echo "<script>alert('Pole E-Mail jest puste !'); document.location.href='kontakt.html';";
} elseif (empty($_POST['content'])) {
 echo "<script>alert('Pole zawartość jest puste !'); document.location.href='kontakt.html';";
} else {
 // Wysyłanie, itp.
}

Oczywiście można to wykonać znacznie trudniej, za pomocą JS + GET, ale tyle wystarczy ;-)

A cd.polskich znaków, to nie wiem.

0

Przerasta mnie to bo teraz już nie wiem jak to zagnieździć w całość te warunki... Oczyściłam trochę ten kod, ale źle to robię. Programistką to ja nie będę...

<?PHP

   $adresat = '[email protected]';    // pod ten adres zostanie wysłana wiadomosc
  
   @$email = $_POST['email'];
   
   @$content = $_POST['content'];

   $header =    "From: [email protected] ";

if (empty($_POST['email'])){

 			echo "<script>alert('Pole E-Mail jest puste !'); document.location.href='../kontakt.html';";

} elseif (empty($_POST['content'])) {

 			echo "<script>alert('Pole zawartość jest puste !'); document.location.href='../kontakt.html';";

} else {
 
 
   
    if (mail($adresat, 'List ze strony', $content, $header)) // tutaj coś nie tak..
   
   
      echo "<script>alert('Wysłano !'); document.location.href='../kontakt.html';</script>";
	  
}

  
?> 

A polskich znaków nie mam w polu content- treści wiadomości (na stronie podczas wpisywania są) ,ale gdy już wyślę i odbieram wiadomość w moim kliencie pocztowym to ich nie ma...

1

Trochę inaczej:

   $adresat = '[email protected]';    // pod ten adres zostanie wysłana wiadomosc 
   $header =    "From: [email protected] "; 
if (empty($_POST['email'])){ 
                         echo "<script>alert('Pole E-Mail jest puste !'); document.location.href='../kontakt.html';";
} elseif (empty($_POST['content'])) { 
                         echo "<script>alert('Pole zawartość jest puste !'); document.location.href='../kontakt.html';"; 
} else { 
   $email = $_POST['email']; // Tutaj być powinno 
   $content = $_POST['content']; // Tutaj być powinno 
    if (mail($adresat, 'List ze strony', $content, $header)) 
      echo "<script>alert('Wysłano !'); document.location.href='../kontakt.html';</script>"; 
}

Sprawdź teraz i nie załamuj się, każdy jakoś zaczynał :)

0

Nie działa niestety, to znaczy warunek jest spełniany, bo faktycznie gdy pola są puste email nie jest wysyłany , jednak po kliknięciu na Wyślij otwiera się pusta strona , nie wyskakuje komunikat żaden . Natomiast gdy wpiszę email i treść wszystko działa tj. pojawia się komunikat i wracam na stronę .

EDIT: Znalazłam błąd, brakowało domknięć <script>

Serdecznie dziękuję za pomoc .

EDIT2

a co do polskich znaków to udało mi się, dodałam te kodowania , w treści wiadomości są już polskie znaki , brakuje jeszcze w polu nadawcy co mnie dziwi bo przecież $header odpowiada za nadawcę ?? :/ Nie rozumiem za bardzo tego .

...
 $from = $_POST['email']; // Tutaj być powinno 

  $header = "MIME-Version: 1.0\r\n";
   $header .="Content-type: text/html; charset=UTF-8\r\n";
   $header .= "Content-Transfer-Encoding: 8bit\n";
   $header .="From: <".$from.">\r\n";
  $content =$_POST['content']; // Tutaj być powinno
    
    if (mail($adresat, 'List ze strony', $content, $header)) 
      echo "<script>alert('Wysłano !'); document.location.href='../kontakt.html';</script>"; 
}

?>
0

Mam małe pytanko do powyższego skryptu, a mianowicie wszystko fajnie działa wysyła maila, lecz bez treści, co moze być przyczyną ?? Pozdrawiam

0

Udało mi się wysyłać e-maile z formularza (poniżej kod).
Ale nie potrafię wysłać e-maila bez formularza, np. zaraz po załadowaniu się lub po odświeżeniu strony. Dlaczego? Co jest źle?

<?php
mail('[email protected]',$subject,$message);
?>

----------------------------------- FORMULARZ - DZIAŁA -------------------------
<?php
    mail('[email protected]','temat','tresc');
    if (!isset($_POST["submit"]))
     {
?>        
    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>  ">
    temat: <input type="text" name="subject" value="temacik" size="50"><br>
    wiadomość:<br> <textarea rows="1" cols="40" name="message"></textarea> <br>
    <input type="submit" name="submit" value="naciśnij, żeby wysłać">
     </form>
<?php
     }
else
  {
  if (isset($_POST["message"]) or isset($_POST["subject"]))
    {
    $subject = $_POST["subject"];
    $message = $_POST["message"];
    $message = wordwrap($message, 70);
        mail('[email protected]',$subject,$message);
    echo '<p style="color:red;"> Wiadomość wysłana </p>';
    }
  }
?>

Pozdrawiam
Marek

1 użytkowników online, w tym zalogowanych: 0, gości: 1