Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znikające dane z formularza
Forum PHP.pl > Forum > Przedszkole
missile
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łą winksmiley.jpg niedogodnością wszytko dział prawidłowo.
Z góry dziekuje za odpowiedź, pozdrawiam.
Kshyhoo
Linia 22:
  1. <?php
  2. $nick0 = $_POST["nick"];
  3. ?>

A nie powinno być:
  1. <?php
  2. $nick0 = $_POST['nick'];
  3. ?>
?
Guest
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.
missile
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...
NetJaro
Ehh...

Podstawy HTML - formularze.

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

smile.gif
missile
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...
missile
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.
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.