Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Problem z formularzem
Forum PHP.pl > Forum > Przedszkole
damian0021
Witam,

słuchajcie zaczynam dopiero naukę PHP - może dla Was to banalne ale dla mnie trudne - także proszę o pomoc wink.gif

Zatem mam formularz na swojej stronie i plik PHP wygląda następująco :

  1. <?
  2. $headers .= "Content-type: text/html; charset=utf-8\";
  3. $imie = $_POST['imie'];
  4. $email = $_POST['email'];
  5. $telefon = $_POST['telefon'];
  6. $data = $_POST['data'];
  7. $godzina = $_POST['godzina'];
  8. $toaddress = "jakismail";
  9. $subject = "Nowa wiadomość";
  10. $all=
  11. "<strong>Dostałeś nowe informacje od klienta :</strong></br></br></br>
  12.  
  13. <strong>Nazwa:</strong> ".$imie."</br>
  14.  
  15. <strong>E-Mail:</strong> ".$email."</br>
  16.  
  17. <strong>Telefon:</strong> ".$telefon."</br>
  18.  
  19. <strong>Data:</strong> ".$data."</br>
  20.  
  21. <strong>Godzina:</strong> ".$godzina."</br>
  22. ";
  23. mail("$toaddress", "$subject", "$all","$headers");
  24. ?>


HTML myślę, że nie muszę pokazywać. Maile się wysyłają wszystko jest pięknie tak jak powinno ale ...

Wysyłam to za pomocą POST'a :

  1. <form name="myForm" method="POST" action="mail.php">


I teraz - w momencie gdy użytkownik kliknie w Wyślij - wszytsko ładnie się wysyła - mail dociera. Plik mail.php jest w szablonie strony czyli od góry <? kod?> potem szablon i wklejone w pewnym miejscu podziękowanie za maila zamiast formularza.

Jednak gdy użytkownik wejdzie po prostu z na domena.pl/mail.php - mail jest również wysyłany (pusty) - można to jakoś zabezpieczyć ?
kamilo818
  1. if (!isset ($_POST)){
  2. header ('Location: formularz.php');
  3. die ();
  4. }
damian0021
Rozumiem, że mam to wrzucić dp mail.php na samym początku formularza?
kamilo818
Tak.
damian0021
  1. <?
  2. if (!isset ($_POST)){
  3. header ('Location: mail.php');
  4. die ();
  5. }
  6.  
  7.  
  8. $headers .= "Content-type: text/html; charset=utf-8\
  9. ";
  10.  
  11.  
  12. $imie = trim($_POST['imie']);
  13. $email = trim($_POST['email']);
  14. $telefon = trim($_POST['telefon']);
  15. $data = trim($_POST['data']);
  16. $godzina = trim($_POST['godzina']);
  17. $toaddress = "jakismail";
  18. $subject = "Klient";
  19.  
  20.  
  21.  
  22.  
  23. $all=
  24. "<strong>Dostałeś nowe informacje o kliencie :</strong></br></br></br>
  25.  
  26. <strong>Nazwa:</strong> ".$imie."</br>
  27.  
  28. <strong>E-Mail:</strong> ".$email."</br>
  29.  
  30. <strong>Telefon:</strong> ".$telefon."</br>
  31.  
  32. <strong>Data:</strong> ".$data."</br>
  33.  
  34. <strong>Godzina:</strong> ".$godzina."</br>
  35. ";
  36. mail("$toaddress", "$subject", "$all","$headers");
  37.  
  38. ?>


Niestety maila dalej wysyła.
Star
skoro masz wszystko w tym samym pliku to albo napiszesz jakas funkcje od wysylania i potem cos w stylu

  1. if( $_POST )
  2. {
  3. mojaFunkcjaOdWysylania( $jakiesparametry[] );
  4. }
  5.  
  6. //formularz


albo tym ifem obejmiesz caly kod od wysylania czyl
  1. if( $_POST ) {
  2. $headers .= "Content-type: text/html; charset=utf-8\";
  3. $imie = $_POST['imie'];
  4. $email = $_POST['email'];
  5. $telefon = $_POST['telefon'];
  6. $data = $_POST['data'];
  7. $godzina = $_POST['godzina'];
  8. $toaddress = "jakismail";
  9. $subject = "Nowa wiadomość";
  10. $all=
  11. "<strong>Dostałeś nowe informacje od klienta :</strong></br></br></br>
  12.  
  13. <strong>Nazwa:</strong> ".$imie."</br>
  14.  
  15. <strong>E-Mail:</strong> ".$email."</br>
  16.  
  17. <strong>Telefon:</strong> ".$telefon."</br>
  18.  
  19. <strong>Data:</strong> ".$data."</br>
  20.  
  21. <strong>Godzina:</strong> ".$godzina."</br>
  22. ";
  23. mail("$toaddress", "$subject", "$all","$headers");
  24.  
  25. header ('Location: mail.php');
  26. }
  27.  
  28. //formularz
  29.  
IAmBoskiM
isset($_POST) zawsze będzie zwracało true, albowiem zmienna $_POST jest zawsze zdefiniowana, nawet jak jest pusta.

Zamiast tego użyj:
  1. <?php // lepiej używać pełnych tagów
  2. if (!empty($_POST)) {
  3. // w klamry weź wszystko
  4. }
  5. ?>


Swoją drogą, zamiast pisać cały czas $zmienna = $_POST['zmienna'] możesz wykorzystać coś takiego (ale tylko jeżeli wszystkie elementy $_POST mają klucze stringowe):
  1. foreach ($_POST as $key => $value) {
  2. $$key = $value; // ew. ${$key}, ale oby dwa powinny działać
  3. }


A poza tym nie wiem czy wiesz, ale jeżeli wstawisz zmienną w cudzysłów (") to zostanie ona zamieniona na jej wartość. Np.:
  1. $str = 'tekst';
  2. echo '$str'; // wypisze $str
  3. echo "$str"; // wypisze tekst
  4. echo "fajny $str"; // wypisze fajny tekst


I ogólnie twoje zrobienie tego stringa zrobiłbym inaczej:
  1. $str = <<< ID
  2. tekst
  3. znowu tekst
  4. itd
  5. itd
  6. itd
  7. ID;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.