Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapisywanie formularza do pliku
Forum PHP.pl > Forum > PHP
kamiz
formularz1.html
  1. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  2. <link rel="stylesheet" href="php.css">
  3. </head>
  4. <form action="wynik1.php" method="post">
  5. <input type="text" name="imie" value="Twoje imię"><br>
  6. <p>Jakie lubisz gatunki gier?<br>
  7. <input type="checkbox" name="fps" value="FPS">FPS
  8. <input type="checkbox" name="rts" value="RTS">RTS
  9. <input type="checkbox" name="rpg" value="RPG">RPG</p>
  10. <p>Ile masz lat?<br>
  11. <input type="radio" name="wiek" value="Poniżej 18 lat">Poniżej 18 lat
  12. <input type="radio" name="wiek" value="Powyżej 18 lat">Powyżej 18 lat</p>
  13. <p>Skąd pochodzisz?<br>
  14. <select name="pochodzenie">
  15. <option value="Polska">Polska</option>
  16. <option value="Niemcy">Niemcy</option>
  17. <option value="USA">USA</option>
  18. <option value="Czechy">Czechy</option>
  19. <option value="Szwecja">Szwecja</option>
  20. <option value="Francja">Francja</option>
  21. <option value="Inny kraj">Inny kraj</option>
  22. </select></p>
  23. <p><input type="submit" value="Wyślij formularz">
  24. <input type="reset" value="Reset danych"></p>
  25. </form>
  26. </body>
  27. </html>


wynik1.php
  1. <?php
  2. $dzien = date('d.m.Y'); //Tworzenie krótkich zmiennych
  3. $godzina = date('H:i');
  4. $imie = $_POST['imie'];
  5. $fps = $_POST['fps'];
  6. $rts = $_POST['rts'];
  7. $rpg = $_POST['rpg'];
  8. $wiek = $_POST['wiek'];
  9. $pochodzenie = $_POST['pochodzenie'];
  10.  
  11. $formularz = "Formularz wysłany dnia $dzien, o godzinie $godzina.
  12. Imię: $imie
  13. Ulubione gatunki gier: $fps $rts $rpg
  14. Wiek: $wiek
  15. Pochodzenie: $pochodzenie"; //Tworzenie wyniku formularza
  16.  
  17. $plik = fopen('plik1.txt', 'a'); //Otwieranie pliku plik1.txt z trybem Dodawanie
  18. flock($plik, LOCK_EX); //Blokowanie pliku
  19. fwrite($plik, $formularz."\n\n"); //Zapisywanie formularza w pliku
  20. flock($plik, LOCK_UN); //Odblokowanie pliku
  21. fclose($plik); //Zamykanie pliku
  22. ?>

  1. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  2. <link rel="stylesheet" href="php.css">
  3. </head>
  4. <?php echo nl2br($formularz); ?> <!--Zamienianie nowych linii w PHP na <br> w HTML i wyświetlenie wyniku-->
  5. </body>
  6. </html>


odczyt1.php
  1. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  2. <link rel="stylesheet" href="php.css">
  3. </head>
  4. <pre>
  5. <?php readfile('plik1.txt'); ?></pre> <!--Wyświetlenie plik1.txt-->
  6. </body>
  7. </html>


Problem w tym, że po jednorazowym wypełnieniu i wysłaniu formularza, w pliku plik1.txt oprócz właściwych danych powstaje mnóstwo nie potrzebnych. Zobaczcie sami tutaj.
Proszę o pomoc, bo nie wiem czym to jest spowodowane, PHP nie wyświetla żadnego błędu, a kod wydaje się czysty.

P.S. Nie wiem jak posługiwać się checkboxami w PHP, to nie działa.
P.S.2 W pliku plik1.txt jest o wiele więcej tych pustych danych, ale w CSS jest wartość "overflow: hidden"
Ellington
Cytat
P.S. Nie wiem jak posługiwać się checkboxami w PHP, to nie działa.


Przeslij sobie kilka formularzy z zalaczonymi i wylaczonymi checkboksami i zrob podglad print_r na $_POST. Zobaczysz, jak trzeba dzialac na checkboksach.

Nie ma tez sensu tworzenia krotkich zmiennych, mysle, ze mozesz wykorzystac zmienne tablicowe $_POST w generowaniu tekstu, szczegolnie, ze nie edytujesz tych danych.

Wyslalem przykladowy wpis przez Twoja strone i wydaje mi sie, ze wszystko dziala dobrze. Zostal dopisany do listy, zgodnie z tym, jak wypelnilem dane w formularzu.
kamiz
Wygląda na to, że problem występuje na moim komputerze. Co ciekawsze gdy wysyłałem post (kliknąłem raz) to otrzymałem wiadomość "Kontrola antyfloodowa jest włączona. Przed wysłaniem kolejnego postu odczekaj 30sek".
Dziwne. Korzystam z najnowszego Firefoksa 3.5.2.

Cytat
Nie ma tez sensu tworzenia krotkich zmiennych, mysle, ze mozesz wykorzystac zmienne tablicowe $_POST w generowaniu tekstu, szczegolnie, ze nie edytujesz tych danych.

No tak, ale $_POST['name'] nie można wstawiać w podwójnych cudzysłowach.
Np. echo "Ala ma kota $_POST['imiekota']"; nie działa.
Kod echo "Ala ma kota $imiekota"; wygląda o wiele czytelniej niż echo 'Ala ma kota'._POST['imiekota'];
Ellington
Tylko, ze przy duzych skryptach, chcac wszystko zamieniac na krotkie zmienne, szybko dostaniesz zawrotu glowy. Jest tez register_globals, ale nie polecam z tego korzystac. Za duzo luk sie robi.
kamiz
OK, skorzystam z twojej rady.
Uczę się z tej książki, na razie przeczytałem rozdział 2, tam właśnie autor tworzył sobie krótkie zmienne tak jak ja.
Ellington
Bardzo dobra ksiazka, czesto polecana.

Z tego, co pamietam, nie ma tam poruszonych tematow zabezpieczen przed atakami XSS etc. Chyba rozdzial o kontroli sesji jest do dopracowania, wlasnie o te najnowsze zagadanienia. W necie znajdziesz duzo na ten temat.

Brakowalo mi tez np. poruszenia watku obslugi cURL, ale to juz niuanse. smile.gif
kamiz
Dziwne, spróbowałem przez IE (6) i wszystko działa bez zarzutu smile.gif. Oprócz tego, że IE źle wyświetla stronę.

edit: Jeszcze dziwniejsze, teraz działa też na Firefoksie! Czyżby samo się naprawiło? ohmy.gif
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.