Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Warning fread()...
waqmaz
post
Post #1





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Słuchajcie, skrypt powinien działać jak należy, a wywala mi:
  1. Warning: fopen() [function.fopen]: Filename cannot be empty in C:\xampp\htdocs\funkcje_uwierzytel.php on line 32
  2.  
  3. Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\funkcje_uwierzytel.php on line 32


Co jest nie tak? Używam Xampp:Apache.
  1. $tmp = $_FILES['zdjecie']['tmp_name'];
  2. $nazwa = $_FILES['zdjecie']['name'];
  3. $rozmiar = $_FILES['zdjecie']['size'];
  4. $typ = $_FILES['zdjecie']['type'];


32 linijka:
  1. $obraz = addslashes(fread(fopen($tmp, "r"), $rozmiar));


Ładuję plik przez formularz przeglądaj do tabeli obraz.

Ten post edytował waqmaz 18.09.2011, 12:28:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
cycofiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Wyświetl sobie
  1. var_dump($_FILES)
Go to the top of the page
+Quote Post
waqmaz
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Teraz pokazało:
  1. array(1) { ["zdjecie"]=> array(5) { ["name"]=> string(6) "b1.PNG" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(23) "C:\xampp\tmp\php20A.tmp" ["error"]=> int(0) ["size"]=> int(458) } }
  2.  
  3.  
  4.  
  5. Warning: fopen() [function.fopen]: Filename cannot be empty in C:\xampp\htdocs\funkcje_uwierzytel.php on line 32
  6.  
  7. Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\funkcje_uwierzytel.php on line 32
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A nie możesz najpierw przenieść pliku do katalogu strony i dopiero wtedy go odczytać ?
Go to the top of the page
+Quote Post
Navyman
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 5.05.2008

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


Zamień

  1. $obraz = addslashes(fread(fopen($tmp, "r"), $rozmiar));


na

  1. $obraz = addslashes(fread(fopen("tmp/".$tmp, "r"), $rozmiar));
Go to the top of the page
+Quote Post
waqmaz
post
Post #6





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


  1. array(1) { ["zdjecie"]=> array(5) { ["name"]=> string(12) "pytajnik.PNG" ["type"]=> string(9) "image/png" ["tmp_name"]=> string(23) "C:\xampp\tmp\php4F8.tmp" ["error"]=> int(0) ["size"]=> int(309) } }
  2. Warning: fopen(tmp/) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\funkcje_uwierzytel.php on line 33
  3.  
  4. Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\funkcje_uwierzytel.php on line 33
  5. Nie udało się załadować avatara, lecz twoje konto zostało utworzone bez niego. Gratulacje! Konto zostalo utworzone!


Chyba nigdy nie będą działać te avatary =/ Dlaczego tak się dzieje, wie ktoś z góry? Wskazałem katalog, jak kazaliście i jak jeden z was podał w przykładzie, no i błąd.

Dam wam cały kod. Bez zabezpieczeń i pisany na szybko, więc nie wytykajcie mnie na razie.

<B>FUNKCJE_UWIERZYTEL.PHP</B>
  1. function wyswietl_formularz_rej() {
  2. ?>
  3. <div class="ramka_rejestracji">
  4. <form enctype="multipart/form-data" action="index.php?action=nowa_rejestracja" method="post">
  5. <center>
  6. <p>Adres e-mail:</p>
  7. <input type="text" name="email" size="30" maxlength="100" />
  8. <p>Hasło:</p>
  9. <input type="password" name="haslo" size="16" maxlength="16" />
  10. <p>Wprowadź hasło ponownie:</p>
  11. <input type="password" name="haslo2" size="16" maxlength="16" />
  12. <p>Nazwa użytkownika:</p>
  13. <input type="text" name="nazwa_uz" size="16" maxlength="16" />
  14. <p>Awatar:</p>
  15. <input type="hidden" name="max_file_size" value="5000" />
  16. <input name="zdjecie" type="file" /><br /><br />
  17.  
  18. <input type="submit" value="Rejestruj">
  19. </center>
  20. </form>
  21. </div>
  22. <?php
  23. }
  24.  
  25. function rejestrowanie_uzytkownika($nazwa_uz, $email, $haslo, $obraz) {
  26.  
  27. $lacz = lacz_bd();
  28. $wynik = $lacz->query("select * from uzytkownik where nazwa_uz='".$nazwa_uz."'");
  29.  
  30. //$obraz = addslashes(fread(fopen($tmp, "r"), $rozmiar));
  31. $obraz = addslashes(fread(fopen("tmp/".$tmp, "r"), $rozmiar));
  32.  
  33. if (!$wynik) {
  34. throw new Exception('Wykonanie zapytania nie powiodlo sie.');
  35. }
  36.  
  37. if ($wynik->num_rows>0) {
  38. throw new Exception('Niestety wybrana przez Ciebie nazwa uzytkownika juz istnieje w bazie danych. Prosimy wybrac inna nazwe.');
  39. }
  40. if($obraz)
  41. //$rsz = explode(".",$nazwa_obrazu);
  42.  
  43. //if(($rsz[1] == "jpg" or $rsz[1] == "gif" or $rsz[1] == "bmp" or $rsz[1] == "png") and (is_uploaded_file($tmp))){
  44.  
  45. $wynik = $lacz->query("insert into uzytkownik values('".$nazwa_uz."', sha1('".$haslo."'), '".$email."','".$obraz."')");
  46. //$wynik = $lacz->query("INSERT INTO zdjecie SET zdjecie='".$obraz."'");
  47.  
  48. if($obraz){
  49. echo 'Plik:', $nazwa_obrazu, 'został przesłany na serwer! ';
  50. }
  51. else{
  52. echo 'Nie wybrales avatara, lecz twoje konto zostalo utworzone bez niego. ';
  53. }
  54.  
  55. if (!$wynik) {
  56. throw new Exception('Rejestracja uzytkownika w bazie danych jest nie mozliwa');
  57. }
  58.  
  59. return true;
  60. }

<B>NOWA_REJESTRACJA.PHP</B>
  1. <?php
  2.  
  3. $email=$_POST['email'];
  4. $nazwa_uz=$_POST['nazwa_uz'];
  5. $haslo=$_POST['haslo'];
  6. $haslo2=$_POST['haslo2'];
  7.  
  8. $tmp = $_FILES['zdjecie']['tmp_name']; //MOZLIWE ZE TU COS SKNOCILEM!!!
  9. $nazwa_obrazu = $_FILES['zdjecie']['name']; //MOZLIWE ZE TU COS SKNOCILEM!!!
  10. $rozmiar = $_FILES['zdjecie']['size']; //MOZLIWE ZE TU COS SKNOCILEM!!!
  11. $typ = $_FILES['zdjecie']['type']; //MOZLIWE ZE TU COS SKNOCILEM!!!
  12. var_dump($_FILES);
  13.  
  14. try {
  15. if (!wypelniony($_POST)) {
  16. echo '<div class="ramka_error"><p>';
  17. throw new Exception('Pola oznaczone gwiazdka * musza zostac wypelnione.');
  18. echo '</p></div>';
  19. }
  20.  
  21. if (!prawidlowy_email($email)) {
  22. echo '<div class="ramka_error"><p>';
  23. throw new Exception('Podano nieprawidlowy adres email!');
  24. echo '</p></div>';
  25. }
  26.  
  27. if ($haslo != $haslo2) {
  28. echo '<div class="ramka_error"><p>';
  29. throw new Exception('Podano dwa rozniace sie od siebie hasla. Pole haslo i powtorz haslo musza byc takie same.');
  30. echo '</p></div>';
  31. }
  32.  
  33. if (strlen($nazwa_uz) > 16) {
  34. echo '<div class="ramka_error"><p>';
  35. throw new Exception('Nazwa uzytkownika, nie moze miec wiecej niz 16 znakow!');
  36. echo '</p></div>';
  37. }
  38.  
  39. if ((strlen($haslo) < 6) || (strlen($haslo) > 16)) {
  40. echo '<div class="ramka_error"><p>';
  41. throw new Exception('Haslo musi skladac sie od 6 do 16 znakow!.');
  42. echo '</p></div>';
  43. }
  44.  
  45. rejestrowanie_uzytkownika($nazwa_uz, $email, $haslo, $obraz);
  46.  
  47. echo 'Gratulacje! Konto zostalo utworzone!';
  48. }
  49.  
  50. catch (Exception $e) {
  51. echo $e->getMessage();
  52. }
  53. ?>
  54.  


Ten post edytował waqmaz 20.09.2011, 02:47:52
Go to the top of the page
+Quote Post
mortus
post
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


W złej kolejności wywołujesz funkcje. Powinno być:
  1. $obraz = fread(fopen(addslashes($tmp), "r"), $rozmiar);


edit:
Nadużywasz wyjątków w swojej aplikacji. W przedstawionym wyżej kodzie powinieneś raczej logować/zapisywać błędy, aby je wszystkie jednocześnie wyświetlić. Tymczasem Ty przy każdym błędzie zatrzymujesz aplikację poprzez wyrzucenie wyjątku. W najgorszym razie pięciokrotnie zatrzymasz działanie aplikacji za każdym razem wyrzucając inny wyjątek. Potencjalnego użytkownika może to zniechęcić. Wyjątki nie nadają się do walidacji danych wprowadzonych do formularza.

Ten post edytował mortus 20.09.2011, 08:03:24
Go to the top of the page
+Quote Post
waqmaz
post
Post #8





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Wiem, mam juz przygotowana funkcje:

  1. function blad($blad){
  2. echo '<div class="ramka_error"><p>';
  3. echo 'BLAD:<br />'.$blad;
  4. echo '</p></div>';
  5. }


,przez co bede sobie wywolywal bez bloku try i z return false:
  1. if (!wypelniony($_POST)) {
  2. blad('Pola oznaczone gwiazdka * musza zostac wypelnione.');
  3. return false;
  4. }

zamiast tak, co ucinalo mi stopke w stronie:
  1. if (!wypelniony($_POST)) {
  2. echo '<div class="ramka_error"><p>';
  3. throw new Exception('Pola oznaczone gwiazdka * musza zostac wypelnione.');
  4. echo '</p></div>';
  5. }

Ok, juz sprawdzam ten kod, co mi podales.

Cholera, nic nie pomogło.

  1. array(1) { ["zdjecie"]=> array(5) { ["name"]=> string(10) "waqmaz.PNG" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(2) ["size"]=> int(0) } }
  2. Warning: fopen(tmp/) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\funkcje_uwierzytel.php on line 34
  3.  
  4. Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\funkcje_uwierzytel.php on line 34
  5. Nie wybrales avatara, lecz twoje konto zostalo utworzone bez niego. Gratulacje! Konto zostalo utworzone!

Czuję się jak totalny noob =/

Ten post edytował waqmaz 20.09.2011, 13:44:46
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 Aktualny czas: 21.08.2025 - 12:28