Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Warning: fclose() expects parameter 1 to be resource, integer given in, blad podczas wywolania funkcji fclose()
michat34
post
Post #1





Grupa: Zarejestrowani
Postów: 200
Pomógł: 1
Dołączył: 4.08.2012

Ostrzeżenie: (10%)
X----


witam, oprocz bledu zadam o razu 2. pytanie aby nie zakladac nowego watku. ale najpierw blad (IMG:style_emoticons/default/wink.gif)
kod:
  1. echo 'Rejestracja przebiegla pomyslnie';
  2. $fp = fopen("uzytkownicy.txt",a);
  3. $login2 = $_POST['login2'];
  4. $haslo2 = $_POST['haslo2'];
  5. $fp = fwrite($fp,"$login2|");
  6. fclose($fp);
  7. $fp2 = fopen("passy.txt",a);
  8. $fp2 = fwrite($fp2,"$login2 = $haslo2|");


wyskakuje error - Warning: fclose() expects parameter 1 to be resource, integer given in...

moglby ktos wyjasnic dlaczego? wydaje mi sie ze uzylem wszystkiego jak nalezy, fclose wymaga uchwytu, jest uchwyt: $fp. ale mimo wszystko napewno cos zle zrobilem wiec prosze o wskazanie bledu. i teraz pytanie:
na kursie wyczytalem ze nalezy zamykac pliki funkcja fclose gdy skonczymy cos do nich zapisywac. bylo to dosyc mocno podkreslone. tutaj nie zamknalem ani $fp ani $fp2 i cały skrypt (wydaje sie ze) dziala jak nalezy. stad moje pytanie: co jezeli ignorowaloby sie zamykanie plikow, jakie sa konsekwencje?

dziekuje i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
untorched
post
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


Lekka poprawka, mam nadzieje, że nie poczujesz się urażony, a jedynie to co dodam pomoże Ci w dalszym pisaniu (IMG:style_emoticons/default/smile.gif)
  1. $login2 = isset($_POST['login2']) ? $_POST['login2'] : ''; // Usunięcie notice
  2. $haslo2 = isset($_POST['haslo2']) ? $_POST['haslo2'] : ''; // j/w
  3. $errors = array(); // zmienna typu array do przechowywania błędów
  4.  
  5. $fp = fopen('uzytkownicy.txt', 'a'); // otwarcie pliku
  6. if($fp !== FALSE) // jeśli zwrot funkcji fopen jest różny od false to znaczy że się udało
  7. {
  8. fwrite($fp, $login2.'|');
  9. fclose($fp);
  10. }
  11. else // nie udało się, dopisanie błędu
  12. {
  13. $errors[] = 'Nie mozna otworzyc pliku uzytkownicy.txt ani zapisac w nim danych!';
  14. }
  15.  
  16. $fp2 = fopen('passy.txt', 'a');
  17. if($fp2 !== FALSE)
  18. {
  19. fwrite($fp2, $login2.' = '.$haslo2.'|');
  20. fclose($fp2);
  21. }
  22. else
  23. {
  24. $errors[] = 'Nie mozna otworzyc pliku passy.txt ani zapisac w nim danych!';
  25. }
  26.  
  27. if($errors == array()) // Nie dodano żadnego błędu
  28. {
  29. echo 'Rejestracja przebiegla pomyslnie';
  30. }
  31. else // Wpisanie listy błędów
  32. {
  33. implode('<br>', $errors);
  34. }


Pyt. 1#: Zapomniałeś o wpisaniu apostrofu(czy jak to się tam zwie) w drugim parametrze funkcji fopen() w obu przypadkach, co prawdopodobnie skutkowało błędem. Ooops, faktycznie, tak jak kolega wyżej zauważył to na pewno wina przypisania zmiennej $fp do funkcji fwrite, ale myślę, że konstrukcja fopen() bez apostrofów również dałaby błąd.

Pyt. 2#: Nie znam prawidłowej odpowiedzi, ale przypuszczam, że wiąże się to z zwolnieniem pamięci.

Ten post edytował untorched 26.08.2012, 01:30:24
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 05:45