Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapisywanie formularza do pliku, problem
kamiz
post 7.08.2009, 08:59:45
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 7.08.2009

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


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"

Ten post edytował kamiz 7.08.2009, 09:11:22
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Ellington
post 7.08.2009, 09:22:39
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


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.

Ten post edytował Ellington 7.08.2009, 09:25:56


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
kamiz
post 7.08.2009, 09:33:37
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 7.08.2009

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


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'];

Ten post edytował kamiz 7.08.2009, 09:35:52
Go to the top of the page
+Quote Post
Ellington
post 7.08.2009, 09:42:33
Post #4





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


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.


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
kamiz
post 7.08.2009, 09:44:53
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 7.08.2009

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


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.
Go to the top of the page
+Quote Post
Ellington
post 7.08.2009, 09:51:00
Post #6





Grupa: Zarejestrowani
Postów: 76
Pomógł: 13
Dołączył: 24.03.2009

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


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


--------------------
while ( !die() ) code();
Go to the top of the page
+Quote Post
kamiz
post 7.08.2009, 11:22:22
Post #7





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 7.08.2009

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


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

Ten post edytował kamiz 7.08.2009, 11:29:26
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: 19.07.2025 - 04:16