Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Problem z formularzem
damian0021
post 9.07.2016, 16:47:58
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

Ostrzeżenie: (0%)
-----


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ć ?
Go to the top of the page
+Quote Post
kamilo818
post 9.07.2016, 17:24:40
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----


  1. if (!isset ($_POST)){
  2. header ('Location: formularz.php');
  3. die ();
  4. }


Ten post edytował kamilo818 9.07.2016, 17:25:14
Go to the top of the page
+Quote Post
damian0021
post 9.07.2016, 17:27:30
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

Ostrzeżenie: (0%)
-----


Rozumiem, że mam to wrzucić dp mail.php na samym początku formularza?
Go to the top of the page
+Quote Post
kamilo818
post 9.07.2016, 17:29:05
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

Ostrzeżenie: (0%)
-----


Tak.
Go to the top of the page
+Quote Post
damian0021
post 9.07.2016, 17:31:07
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 7.05.2010

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował damian0021 9.07.2016, 17:43:31
Go to the top of the page
+Quote Post
Star
post 9.07.2016, 18:16:40
Post #6





Grupa: Zarejestrowani
Postów: 294
Pomógł: 34
Dołączył: 16.02.2015

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post
IAmBoskiM
post 9.07.2016, 19:10:31
Post #7





Grupa: Zarejestrowani
Postów: 72
Pomógł: 11
Dołączył: 8.05.2016

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 19:12