Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Osadzenie formularza
Forum PHP.pl > Forum > Przedszkole
pawelg
Witam
Zaczynam pisać (chyba nie muszę dodawać, że jestem początkujący w tej materii), a raczej przerabiać na własne potrzeby skrypty php. Chciałbym uruchomić formularz na stronie www, z prostą weryfikacją pól. Wszystko działa pięknie do chwili kiedy formularz wkomponowałem w stronę. Bład pewnie jest gdzieś w moim nieumiejętnym połączeniu php i html. Skrypt nie wysyła, ani nie wyświtla informacji o niewprowadzonych danych. Poniżej przedstawiam Kod strony z formularzem. za wszlkie odpowiedzi i podpowiedzi wielkie dzięki.

  1. <!-- pierwsza kolumna -->
  2. <table cellpadding="2" cellspacing="2" border="0" width="100%">
  3. <tr>
  4. <td valign="top">
  5. <div style="margin-bottom:15px; margin-top:10px; margin-left:10px; margin-right:10px;" >
  6. <table cellpadding="0" cellspacing="0">
  7. <tr>
  8. <td background="obrazki/zadaj_pytanie.jpg" valign="top" width="543px" height="19px"></td>
  9. </tr>
  10. <tr>
  11. <td background="obrazki/tlo_podstrona.jpg" valign="top" width="543px">
  12. <br><br>
  13. <?
  14. $form_block = "
  15. <FORM class=\"log\" METHOD=\"post\" ACTION=\"$PHP_SELF\">
  16. <table cellpadding=\"4\" border=\"0\" cellspacing=\"0\">
  17. <tr>
  18. <td valign=\"top\"> <p align=\"left\"> <font name=\"Verdana\" size=\"2\"><b>Imię i Nazwisko:</b></font></p></td>
  19. <td valign=\"top\"><INPUT type=\"text\" NAME=\"imie\" SIZE=70 style=\"color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7\"></td>
  20. </tr>
  21. <tr>
  22. <td valign=\"top\"> <p align=\"left\"> <font name=\"Verdana\" size=\"2\"><b>Adres e-mail:</b></font></p></td>
  23. <td valign=\"top\"> <INPUT type=\"text\" NAME=\"email\" SIZE=70 style=\"color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7\"></td>
  24. </tr>
  25. <tr>
  26. <td valign=\"top\"> <p align=\"left\"> <font name=\"Verdana\" size=\"2\"><b>Treść pytania:</b></font></p></td>
  27. <td valign=\"top\"> <TEXTAREA NAME=\"tresc\" COLS=50 ROWS=5 WRAP=virtual style=\"color: #0B2F12; font-size:12px;border:solid 1px; border-color:#104319; background-color:#F0FFF7\"></textarea> </td>
  28. </tr>
  29. <tr>
  30. <td></td>
  31. <td valign=\"top\"><p align=\"center\"><input type=\"submit\" name=\"contact\" value=\"W y ś l i j\" style=\"color: white; font-weight: bold; text-decoration: none; font-size: 11px; background-color:#185D24; border-style: outset; border-width:1px; text-align: center; line-height:15pt;\"></p></td>
  32. </tr>
  33. </table>
  34. </FORM>
  35. ";
  36. if ($op != "ds"){
  37. echo "$form_block";
  38. }
  39. else if ($op == "ds") {
  40. if($imie == "") {
  41. $imie_err = "<font color=red>Proszę wpisać Imię i Nazwisko</font><br>";
  42. $send = "no";
  43. }
  44. if (strlen($email)==0) { //jeśli nie podał e-maila
  45. $email_err = "<font color=red>Proszę wpisać adres e-mail</font><br>";
  46. $send = "no";
  47. }
  48. else if (!eregi(".+@.+\..+",$email)) { //sprawdzamy poprawność e-mail
  49. $email_err = "<font color=red>Proszę wpisać poprawny adres e-meil</font><br>";
  50. $send = "no";
  51. }
  52. if($tresc == "") {
  53. $tresc_err = "<font color=red>Proszę wpisać treść pytania</font><br>";
  54. $send = "no";
  55. }
  56. if($send != "no") {// Można wysłać meila
  57. $msg = "E-mail wysłany ze strony www.securus.net.pl\n\n";
  58. $msg .= "Nadawca:\t$imie\n";
  59. $msg .= "Adres e-mail Nadawcy:\t$email\n";
  60. $msg .= "Wiadomość:\t\t$tresc\n\n";
  61. $do = "pawelg@neostrada.pl";
  62. $temat = "Pytanie ze strony Firmowej";
  63. $mailheaders = "FROM: securus.net.pl";
  64. $mailheaders .= "Reply-To: $sender_email\n\n";
  65. mail($do, $temat, $msg);
  66. echo "<p>Wiadomość została wysłana</p>";
  67. }
  68. else if ($send == "no"){
  69. echo "$imie_err";
  70. echo "$email_err";
  71. echo "$tresc_err";
  72. echo "$form_block";
  73. }
  74. }
  75. ?>
  76. </table>
  77. </div>
  78.  
  79. </td>
  80. </tr>
  81. </table>
  82. <!-- koniec pierwsza kolumna -->
Darti
Zmienne z formularza przechwytuj za pomocą tablicy $_POST (np $_POST['email']). i umieszczaj tutaj kod w odpowiednich tagach (np [ php ] kod php [ /php ])
pawelg
Cytat(Darti @ 9.05.2007, 14:15:02 ) *
Zmienne z formularza przechwytuj za pomocą tablicy $_POST (np $_POST['email']). i umieszczaj tutaj kod w odpowiednich tagach (np [ php ] kod php [ /php ])

Możesz podać przykład odnośnie tagów, nigdy tego nie robiłem, a z przykładem szybciej rzowikłam sytuację. Dzięki
aga323
Z tagami chodzi o to, że gdy piszesz na tym forum jakiś post i podajesz kod to zawsze musisz go umieścić w odpowiednich znacznikach, które sa widoczne przy edycji posta (php, manual, sql, html, xml) :]
pawelg
Cytat(Darti @ 9.05.2007, 14:15:02 ) *
Zmienne z formularza przechwytuj za pomocą tablicy $_POST (np $_POST['email']). i umieszczaj tutaj kod w odpowiednich tagach (np [ php ] kod php [ /php ])

dodałem $_POST ale i tak mi cś nie działa...
  1. <!-- pierwsza kolumna -->
  2. <table cellpadding="2" cellspacing="2" border="0" width="100%">
  3. <tr>
  4. <td valign="top">
  5. <div style="margin-bottom:15px; margin-top:10px; margin-left:10px; margin-right:10px;" >
  6. <table cellpadding="0" cellspacing="0">
  7. <tr>
  8. <td background="obrazki/zadaj_pytanie.jpg" valign="top" width="543px" height="19px"></td>
  9. </tr>
  10. <tr>
  11. <td background="obrazki/tlo_podstrona.jpg" valign="top" width="543px">
  12. <br><br>
  13. <?
  14. $form_block = "
  15. <FORM class="log" METHOD="post" ACTION="$PHP_SELF">
  16. <table cellpadding="4" border="0" cellspacing="0">
  17. <tr>
  18. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Imię i Nazwisko:</b></font></p></td>
  19. <td valign="top"><INPUT type="text" NAME="imie" SIZE=70 style="color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7"></td>
  20. </tr>
  21. <tr>
  22. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Adres e-mail:</b></font></p></td>
  23. <td valign="top"> <INPUT type="text" NAME="email" SIZE=70 style="color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7"></td>
  24. </tr>
  25. <tr>
  26. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Treść pytania:</b></font></p></td>
  27. <td valign="top"> <TEXTAREA NAME="tresc" COLS=50 ROWS=5 WRAP=virtual style="color: #0B2F12; font-size:12px;border:solid 1px; border-color:#104319; background-color:#F0FFF7"></textarea> </td>
  28. </tr>
  29. <tr>
  30. <td></td>
  31. <td valign="top"><p align="center"><input type="submit" name="contact" value="W y ś l i j" style="color: white; font-weight: bold; text-decoration: none; font-size: 11px; background-color:#185D24; border-style: outset; border-width:1px; text-align: center; line-height:15pt;"></p></td>
  32. </tr>
  33. </table>
  34. </FORM>
  35. ";
  36. $imie1 = $_POST['imie'];
  37. $email1 = $_POST['email'];
  38. $tresc1 = $_POST['tresc'];
  39. if ($op != "ds"){
  40. echo "$form_block";
  41. else if ($op == "ds") {
  42. if($imie == "") {
  43. $imie_err = "<font color=red>Proszę wpisać Imię i Nazwisko</font><br>";
  44. $send = "no";
  45. }
  46. if (strlen($email)==0) { //jeśli nie podał e-maila
  47. $email_err = "<font color=red>Proszę wpisać adres e-mail</font><br>";
  48. $send = "no";
  49. }
  50. else if (!eregi(".+@.+..+",$email)) { //sprawdzamy poprawność e-mail
  51. $email_err = "<font color=red>Proszę wpisać poprawny adres e-meil</font><br>";
  52. $send = "no";
  53. }
  54. if($tresc == "") {
  55. $tresc_err = "<font color=red>Proszę wpisać treść pytania</font><br>";
  56. $send = "no";
  57. }
  58. if($send != "no") {// Można wysłać meila
  59. $msg = "E-mail wysłany ze strony www.securus.net.plnn";
  60. $msg .= "Nadawca:t$imien";
  61. $msg .= "Adres e-mail Nadawcy:t$emailn";
  62. $msg .= "Wiadomość:tt$trescnn";
  63. $do = "pawelg@neostrada.pl";
  64. $temat = "Pytanie ze strony Firmowej";
  65. $mailheaders = "FROM: securus.net.pl";
  66. $mailheaders .= "Reply-To: $sender_emailnn";
  67. mail($do, $temat, $msg);
  68. echo "<p>Wiadomość została wysłana</p>";
  69. }
  70. else if ($send == "no"){
  71. echo "$imie_err";
  72. echo "$email_err";
  73. echo "$tresc_err";
  74. echo "$form_block";
  75. }
  76. }
  77. ?>
  78. </div>
  79. </td>
  80. </tr>
  81. </table>
  82. <!-- koniec pierwsza kolumna -->
Darti
Najpierw robisz np tak:
  1. <?php
  2. $tresc1 = $_POST['tresc'];
  3. ?>

a potem używasz:
  1. <?php
  2. if($tresc == "") {
  3. ?>


Zdecyduj się winksmiley.jpg
pawelg
Rozumiem, że powinno być tak:
  1. <?php
  2. $tresc = $_POST['tresc1'];
  3. ?>

a potem tak:
  1. <?php
  2. if($tresc == "") {
  3. ?>
Darti
Nie, powinno być tak(przykładowo dla pola o nazwie tresc):
  1. <?php
  2. $tresc = $_POST['tresc'];
  3. ?>
a później
  1. <?php
  2. if($tresc == "") {
  3. ?>
bo przecież to musi ze sobą korespondować (wysyłasz z formularza "tresc" to ląduje w $_POST['tresc'] przepisujesz do zmiennej (np $tresc) i sprawdzasz zmienną ($treść).
pawelg
Pozmieniałem, ale w dalszym ciągu coś mam nie tak jak potrzeba bo skrytp nie wyświetla komunikató i nie przysyła meila...
  1. <?
  2.  
  3. $form_block = "
  4.  
  5. <FORM METHOD="post" ACTION="$PHP_SELF">
  6.  
  7. <table cellpadding="4" border="0" cellspacing="0">
  8. <tr>
  9. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Imię i Nazwisko:</b></font></p></td>
  10. <td valign="top"><INPUT type="text" NAME="imie" SIZE=70 style="color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7"></td>
  11. </tr>
  12. <tr>
  13. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Adres e-mail:</b></font></p></td>
  14. <td valign="top"> <INPUT type="text" NAME="email" SIZE=70 style="color:#0B2F12; font-size:10px; border:solid 1px; border-color:#104319; background-color:#F0FFF7"></td>
  15. </tr>
  16. <tr>
  17. <td valign="top"> <p align="left"> <font name="Verdana" size="2"><b>Treść pytania:</b></font></p></td>
  18. <td valign="top"> <TEXTAREA NAME="tresc" COLS=50 ROWS=5 WRAP=virtual style="color: #0B2F12; font-size:12px;border:solid 1px; border-color:#104319; background-color:#F0FFF7"></textarea> </td>
  19. </tr>
  20. <tr>
  21. <td></td>
  22. <td valign="top"><p align="center"><input type="submit" name="contact" value="W y ś l i j" style="color: white; font-weight: bold; text-decoration: none; font-size: 11px; background-color:#185D24; border-style: outset; border-width:1px; text-align: center; line-height:15pt;"></p></td>
  23. </tr>
  24. </table>
  25.  
  26. </FORM>
  27.  
  28. ";
  29. $imie = $_POST['imie'];
  30. $email = $_POST['email'];
  31. $tresc = $_POST['tresc'];
  32.  
  33. if ($op != "ds"){
  34. echo "$form_block";
  35. } else if ($op == "ds") {
  36. if($imie == "") {
  37. $imie_err = "<font color=red>Proszę wpisać Imię i Nazwisko</font><br>";
  38. $send = "no";
  39. }
  40.  
  41. if (strlen($email)==0) { //jeśli nie podał e-maila
  42. $email_err = "<font color=red>Proszę wpisać adres e-mail</font><br>";
  43. $send = "no";
  44. }
  45. else if (!eregi(".+@.+..+",$email)) { //sprawdzamy poprawność e-mail
  46. $email_err = "<font color=red>Proszę wpisać poprawny adres e-meil</font><br>";
  47. $send = "no";
  48. }
  49.  
  50. if($tresc == "") {
  51. $tresc_err = "<font color=red>Proszę wpisać treść pytania</font><br>";
  52. $send = "no";
  53. }
  54.  
  55. if($send != "no") {
  56. // Można wysłać meila
  57. $msg = "E-mail wysłany ze strony www.securus.net.plnn";
  58. $msg .= "Nadawca:t$imien";
  59. $msg .= "Adres e-mail Nadawcy:t$emailn";
  60. $msg .= "Wiadomość:tt$trescnn";
  61.  
  62. $do = "pawelg@neostrada.pl";
  63. $temat = "Pytanie ze strony Firmowej";
  64. $mailheaders = "FROM: securus.net.pl";
  65. $mailheaders .= "Reply-To: $sender_emailnn";
  66.  
  67. mail($do, $temat, $msg);
  68. echo "<p>Wiadomość została wysłana</p>";
  69. } else if ($send == "no"){
  70. echo "$imie_err";
  71. echo "$email_err";
  72. echo "$tresc_err";
  73. echo "$form_block";
  74. }
  75.  
  76. }
  77. ?>
Darti
Skrypt blokuje się w tym miejscu:
  1. <?php
  2. if ($op != "ds"){
  3. echo "$form_block";
  4. } else if ($op == "ds") {
  5. ?>

Albo przypiszesz do zmiennej $op wartość "ds" albo zamienisz to tym:
  1. <?php
  2. if ($_POST['contact'] != "W y ś l i j"){
  3. echo "$form_block";
  4. } else if ($_POST['contact'] == "W y ś l i j") {
  5. ?>
pawelg
Wielkie dzięki wreszcie dział poprawnie biggrin.gif
Mam jeszcze dwa pytania ponieważ chciałbym trochę udoskanlić formularz.

Pytanie nr 1

Jak zrobić aby po przesłaniu formularza na meila dana treść w nim był pogrubiona.
konkretnie:
  1. <?php
  2. $msg = "E-mail wysłany ze strony www.securus.net.plnn";
  3. $msg .= "Nadawca:t$imien"; 
  4. $msg .= "Adres e-mail Nadawcy:t$emailn";
  5. $msg .= "Wiadomość:tt$trescnn";
  6. ?>


chodzi mi o pogrubienie słowa "Nadawca:". Kiedy użyłem znaczników html-a (<b>) czcionnka w meilu nie była pogrubiona tylko pokazały się znaczniki.

i pytanie numer 2

Czy można zdefiniować w skrypcie konto z którego ma być wysłany formularz? i jeśli można to jak to zrobić.
Darti
1: dołóż takie coś:
  1. <?php
  2. $mailheaders .="MIME-Version: 1.0rn";
  3. $mailheaders .="Content-type: text/html; charset=iso-8859-2rn";
  4. ?>

2:
  1. <?php
  2. mail($do, $temat, $msg,$mailheaders);
  3. ?>
pawelg
hmm w dalszym ciągu coś źle robie...
Zmodyfikowałem formularz do tego:
  1. <?php
  2. $msg = "E-mail wysłany ze strony www.securus.net.plnn";
  3. $msg .= "<b>Nadawca:</b>t$imien";
  4. $msg .= "Adres e-mail Nadawcy:t$emailn";
  5. $msg .= "Wiadomość:tt$trescnn";
  6. $do = "pawelg@neostrada.pl";
  7. $temat = "Pytanie ze strony Firmowej";
  8. $mailheaders .="MIME-Version: 1.0rn";
  9. $mailheaders .="Content-type: text/html; charset=iso-8859-2rn";
  10. $mailheaders = "FROM: securus.net.pl";
  11. $mailheaders .= "Reply-To: $webmaster@securus.net.plnn";
  12. mail($do, $temat, $msg, $mailheaders);
  13. ?>

a w meilu przychodzi mi coś takiego:
-----Original Message-----
From: "securus.net.plReply-To:"@web18.futuro.biz.pl [mailto:"securus.net.plReply-To:"@web18.futuro.biz.pl]
Sent: Friday, May 11, 2007 1:00 PM
To: pawelg@neostrada.pl
Subject: Pytanie ze strony Firmowej
E-mail wysłany ze strony www.securus.net.pl
<b>Nadawca:</b> blabla
Adres e-mail Nadawcy: bla@wp.pl
Wiadomoœć: treœć

Jak widać w dalszym ciągu wstawi znaczniki zamiast pogrubić czcionkę
Co do adresu z którego powinien wysłać formularz to nic się nie zmieniło wysyła z tego samego konta co wcześniej...
no i doszło następne pytanie - jak pożbyć się kwadrata? wstawia go zamiast litery ś Czy chodzi może o kodowanie pliku do np do UTF8?
Darti
Bo w 10 wierszu zapomniałeś kropki przed znakiem równości (zrób takie coś jak w wierszu 9 .= )
pawelg
Racja brak jednej kroki robił zamieszanie przeoczyłem ją...

niestety w dalszym ciągu mam problem z polskimi znakami...:
"ą" to "š"
"ś" to "œ"
"ź" to "Ÿ"

i nieszczęsnym kontem z którego wysyłany jest formularz....
Darti
Te dziwne znaczki to wynik dobrania nieodpowiedniego kodowania. Albo napiszesz skrypt w iso-8859-2 (np używając edytora Ked z ustawionym kodowaniem na iso) albo pozostaniesz przy notatniku i zastosujesz w nagłówku
  1. Content-type: text/html; charset=windows-1250\r\n
pawelg
mam takie kodowanie umieszczone w nagłówku strony
  1. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1250" />


Próbowałem zapisywać plik w innym kodowaniu (UTF-8 itp.), zmieniałem kodowanie w nagłówku strony, ale cały czas zmienia mi polskie litery na jakieś znaczki.
Cała strona wyświetlana jest poprawnie nie ma żadnych dziwacznych znaków, problem pojawia się dopiero w wiadomości e-mail którą wysłał skrypt.

Zastanawiam się więc czy się nie da zaszyć kodowania w skrypcie php.
Darti
Nie jestem pewien na 100%, ale co innego nagłówek HTML a co innego nagłówek maila. Klienty poczty orientują się raczej wg nagłówka listu a nie znacznika <META> w treści listu (przynajmniej jak bym pisał klienta poczty to tak bym zrobił).
pawelg
Racja zmieniłem kodowanie w skrypcie i teraz chodzi
  1. <?php
  2. $mailheaders .="Content-type: text/html; charset=Windows-1250rn"
  3. ?>


jednak cały czas formularz jest wysyłany z innego adresu email niż jest podany w skrypcie
  1. <?php
  2. if($send != "no") {// Można wysłać meila
  3. $msg = "E-mail wysłany ze strony www.securus.net.pl<br><br>nn";
  4. $msg .= "<b>Nadawca:</b>t$imie<br><br>";
  5. $msg .= "<b>Adres e-mail Nadawcy:</b>t$email<br><br>";
  6. $msg .= "<b>Wiadomość:</b>tt$tresc<br><br><br>";
  7. $do = "pawelg@neostrada.pl";
  8. $temat = "Pytanie ze strony Firmowej";
  9. $mailheaders .="MIME-Version: 1.0rn";
  10. $mailheaders .="Content-type: text/html; charset=Windows-1250rn";
  11. $mailheaders .= "FROM: securus.net.pl";
  12. $mailheaders .= "Reply-To: $webmaster@securus.net.plnn";
  13. mail($do, $temat, $msg, $mailheaders);
  14. echo "<p><blockquote dir="ltr" style="MARGIN-RIGHT: 0px"><font color="#063A08"><b>Wiadomość została wysłana</br></br>Dziękujemy za zainteresowanie odpowiemy najszybciel jak to tylko możliwe</b></font><br><br><a href="zadaj_pyt.php" class="wiecej">< < powrót</a></blockquote></p>";
  15. }
  16. ?>
Darti
Może zanim wyślesz maila, spróbuj dodać coś takiego (a wywal pole FROM: z nagłówków):
  1. <?php
  2. ini_set ("sendmail_from","webmaster@securus.net.pl");
  3. ?>
pawelg
niestety cały czas e-mail przychodzi domyślnego adresata...

Witam,
znalazłem rozwiązanie problemu:
  1. <?php
  2. $mail_from = "webmaster@securus.net.pl";
  3. $mailheaders .= "From: Securus.net.pl<".$mail_from.">rn";
  4. ?>


działa całkiem dobrze.

Dzieki za pomoc
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.