Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> znikające dane z formularza
-missile-
post
Post #1





Goście







Witam, mam problem:
Napisałem w php prosty formularz:
  1. <?php
  2.  
  3. $formularz = <<<FORM
  4. Treść wiadomości: (<span style="color: red;">*</span>)<br>
  5. <textarea name="txt" style="width: 250px; height: 100px"></textarea><br><br>
  6. Imię, nazwisko lub nick: (<span style="color: red;">*</span>)<br>
  7. <input type="text" name="nick" style="width: 250px"><br><br>
  8. Adres e-mail: (<span style="color: red;">*</span>)<br>
  9. <input type="text" name="email" style="width: 250px"><br><br>
  10. <span>Priorytet: (<span style="color: red;">*</span>)</span>&nbsp;&nbsp;&nbsp;
  11. <input type="radio" name="pr" value="normalny" checked> Normalny&nbsp;
  12. <input type="radio" name="pr" value="wysoki"> Wysoki<br><br>
  13. <input type="checkbox" name="check" value="on">Wyślij kopie wiadomości do mnie<br><br><br>
  14. <input type="submit" name="submit" value="Wyślij">&nbsp;&nbsp;&nbsp;&nbsp;
  15. <span>(<span style="color: red;">*</span>) - pola wymagane</span><br>
  16. FORM;
  17.  
  18. if ((empty($_POST['txt']) or empty($_POST['nick']) or empty($_POST['email'])) and !empty($_POST['submit'])) {
  19.  
  20. $txt0 = $_POST['txt'];
  21. $nick0 = $_POST["nick"];
  22. $email = $_POST['email'];
  23.  
  24. "Treść wiadomości: (<span style="color: red;">*</span>)<br>
  25. <textarea name="txt" style="width: 250px; height: 100px">$txt0</textarea><br><br>
  26. Imię, nazwisko lub nick: (<span style="color: red;">*</span>)<br>
  27. <input type="text" value="$nick0" name="nick" style="width: 250px"><br><br>
  28. Adres e-mail: (<span style="color: red;">*</span>)<br>
  29. <input type="text" value="$email0" name="email" style="width: 250px"><br><br>
  30. <span>Priorytet: (<span style="color: red;">*</span>)</span>&nbsp;&nbsp;&nbsp;
  31. <input type="radio" name="pr" value="normalny" checked> Normalny&nbsp;
  32. <input type="radio" name="pr" value="wysoki"> Wysoki<br><br>
  33. <input type="checkbox" name="check" value="on">Wyślij kopie wiadomości do mnie<br><br><br>
  34. <input type="submit" name="submit" value="Wyślij">&nbsp;&nbsp;&nbsp;&nbsp;
  35. <span>(<span style="color: red;">*</span>) - pola wymagane</span><br>
  36. <br><br><span style="color: red; font-weight: bold;">Wypełnij wszystkie, wymagane pola formularza!</span></form>";
  37. }
  38.  
  39. elseif (empty($_POST['txt']) or empty($_POST['nick']) or empty($_POST['email']) and empty($_POST['submit'])) {
  40.  
  41. "$formularz</form>";
  42. }
  43.  
  44. elseif (!empty($_POST['txt']) && !empty($_POST['nick']) && !empty($_POST['email'])) {
  45.  
  46. $message = "From: $nickne-mail: $emailnPriorytet: $prnMessage:n$txt";
  47. $header = "From: $nick <$email>";
  48. $time = date('[d.m.Y, H:i]');
  49.  
  50. mail('ktos@serwer.pl','formularz ze strony [3658745879]',"$message","$header")
  51. or die("<span style="color: red; font-weight: bold;">Error!</span> Wiadomość nie może zostać wysłana!<br>
  52. Skontaktuj się z administratorem tej strony za pomocą<br>
  53.  swojej skrzynki email bądź programu pocztowego: <a href="mailto:admin@serwer.pl?subject=błąd_formularza_kontaktowego!">admin@serwer.pl</a>");
  54.  
  55. if ("$check" == 'on') {
  56.  
  57.  $message = "Witaj: $nicknnTo jest kopia wiadomosci wysłanej przez Ciebie do visumcassis
    .net Wkrótce otrzymasz odpowiedz.
  58. nPoniżej znajdziesz jej tresć.n----nn$txtnn----nWiadomosc wysłano: $time";
  59.  
  60. mail("$email",'wax s.c. - kopia wiadomości',"$message","$header");
  61. }
  62.  
  63. "$formularz<br><br>
  64. $time <span style= "font-weight: bold;">Wiadomość została wysłana!</span><br>
  65. Jeśli chcesz wysłac kolejną, wypełnij wymagane pola i<br>kliknij <span style="font-weight: bold;">"Wyślij"</span></form>";
  66. }
  67.  ?>

Skrypt ten przed wysłaniem sprawdza czy wszystkie pola formularza są wypełnione. Problem jest w tym, iż w przypadku nie wypełnienia wszytkich pól i klikniecia w przycisk WYŚLIJ znikają już wpisane dane pomimo zdefiniowania zmiennych w wierszach 21,22,23. Po za tą małą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) niedogodnością wszytko dział prawidłowo.
Z góry dziekuje za odpowiedź, pozdrawiam.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Linia 22:
  1. <?php
  2. $nick0 = $_POST["nick"];
  3. ?>

A nie powinno być:
  1. <?php
  2. $nick0 = $_POST['nick'];
  3. ?>
?
Go to the top of the page
+Quote Post
-Guest-
post
Post #3





Goście







Dla uzupełnienia dodam że plik jest includowany za pomocą zmiennej superglobalnej
$_GET['id']do pliku index.php Cały skrypt działał bez zarzutu na innym serwerze, lecz wtedy nie używałem zmiennej $_GET['id'] tylko zwykłą zmienną "$id". Po przeniesieniu na obecny serwer, metoda ze zwykłą zmienną przestała działać, tzn nie można było includować żadnego pliku za pomocą odnośnika <a href="index.php?id=1"</a>
Po zmianie na wyrzej opisaną superglobalną mozna już było includować, lecz pojawił się problem znikania danych z wypełnionych pól.
Go to the top of the page
+Quote Post
-missile-
post
Post #4





Goście







Zmiana
  1. <?php
  2. $nick0 = $_POST["nick"];
  3. ?>

na
  1. <?php
  2. $nick0 = $_POST['nick'];
  3. ?>

nic nie dała. Myślę jednak, że nie tędy droga. Podwójny cydzysłów sprawia tylko, że parser wyszukuje w nim zmiennych i je wczytuje...
Go to the top of the page
+Quote Post
NetJaro
post
Post #5





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

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


Ehh...

Podstawy HTML - formularze.

Tworzysz pola a nie rozpoczynasz formularza <form method=post> [pola] </form>

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
-missile-
post
Post #6





Goście







To jest wycinek kodu html ze strony index.php po sparsowaniu... Jak widać formularzowi niczego nie brakuje.

  1. <td class="TcontentsTdEssence">
  2.  
  3. <form class="form0" method="post" onsubmit="return spr(this);">
  4. <span class="d0">FORMULARZ KONTAKTOWY</span>
  5.  
  6. <br><br>
  7. Treść wiadomości: (<span style="color: red;">*</span>)<br>
  8. <textarea name="txt" style="width: 250px; height: 100px"></textarea><br><br>
  9. Imię, nazwisko lub nick: (<span style="color: red;">*</span>)<br>
  10. <input type=\"text" name="nick" style="width: 250px"><br><br>
  11. Adres e-mail: (<span style="color: red;">*</span>)<br>
  12. <input type="text" name="email" style="width: 250px"><br><br>
  13.  
  14. <span>Priorytet: (<span style="color: red;">*</span>)</span>&nbsp;&nbsp;&nbsp;
  15. <input type="radio" name="pr" value=\"normalny" checked> Normalny&nbsp;
  16. <input type="radio" name="pr" value=\"wysoki"> Wysoki<br><br>
  17. <input type="checkbox" name="check" value="on">Wyślij kopie wiadomości do mnie<br><br><br>
  18. <input type="submit" name="submit" value="Wyślij">&nbsp;&nbsp;&nbsp;&nbsp;
  19. <span>(<span style="color: red;">*</span>) - pola wymagane</span><br></form>
  20.  
  21. <script language="javascript" type="text/javascript" src="_ext/mail_verify.js"></script>
  22. </td>


Ps.NetJaro:
Nie czytałeś uważnie powyższych postów. Formularz działa, problem pojawia się gdy skrypt sprawdza czy wszystkie pola są wypełnione... Poza tym nigdzie nie jest napisane, że skrypt php musi wysyłać kompletny formularz do przeglądarki. Równie dobrze część może zostać napisana w zwykłym htmlu - sprawdzone...
Go to the top of the page
+Quote Post
missile
post
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 12.11.2005
Skąd: hen hen

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


Już wszystko w porządku błąd tkwił w zwykłej literówce w wierszu 23.
Jest:
  1. <?php
  2.  
  3. $email = $_POST['email'];
  4.  
  5. ?>

a powinno być:
  1. <?php
  2.  
  3. $email0 = $_POST['email'];
  4.  
  5. ?>

Problem wynika z wersji php na obydwu serwerach. Na starszej nie możliwe jest wyświetlenie danych bez deklaracji zmiennej, innej niż zawarta w superglobalnej $_POST['email']. Na nowszej wersji nie jest konieczna deklaracja z wierszy 21, 22 oraz 23. Wystarczy użyć zmiennej jak zdeklarowana w superglobalnej np: $email
Nie wiem w jakiej wersji php zaczyna się ta różnica. Ja pracowałem na wersjach 4.3.10 oraz 4.4.1
Pozdrawiam.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 18.09.2025 - 14:17