Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zapis błędów do pliku
Forum PHP.pl > Forum > Przedszkole
Remik37
Witam wszystkich,

mam dwa pliki:

images.php
  1. require_once 'fun.php';
  2.  
  3. if(isset($_GET['imgnr'])) {
  4.  
  5. } else {
  6. errThumb();
  7. $msg = "Błąd - nieprawidłowy parametr\r\n";
  8. errSave($msg);
  9. }


fun.php
  1. function errThumb() {
  2. $img = imagecreatefromjpeg('bcg.jpg');
  3. $thb = imagecreatefromjpeg('logo.jpg');
  4.  
  5. $thbWidth = imagesx($thb);
  6. $thbHeight = imagesy($thb);
  7.  
  8. imagecopymerge($img, $thb, 15, 15, 0, 0, $thbWidth, $thbHeight, 100);
  9.  
  10. $fontColor = ImageColorAllocate($img, 255, 255, 255);
  11. ImageTTFText($img, 12, 0, 15, 50, $fontColor, 'arialbd.ttf', 'TEST');
  12.  
  13. header('Content-Type: image/jpeg');
  14. imagejpeg($img, null, 100);
  15. imagedestroy($img);
  16. imagedestroy($thb);
  17. }
  18.  
  19. function errSave($msg) {
  20. $file = "error2.txt";
  21.  
  22. $fp = fopen($file, "a");
  23. flock($fp, 2);
  24. fwrite($fp, $msg);
  25. flock($fp, 3);
  26. fclose($fp);
  27. }


Generalnie program ma generować zdjęcie po skorzystaniu z linku, np. images.php?imgnr=5 - i to działa. Problem pojawia się gdy skorzysta się z błędnego linku, np images.php?aaaa=5 (brak imgnr).
W takim przypadku tworzy się inna grafika, a do pliku txt zostaje dopisany komunikat z błędem. I tutaj działa to prawie dobrze... problem jest w tym, że komunikat zawsze zapisuje się dwa razy.

Czyli jedno wywołanie images.php?aaaa=5 tworzy w pliku error2.txt:
Błąd - nieprawidłowy parametr
Błąd - nieprawidłowy parametr

Może mi ktoś wytłumaczyć czemu tak się dzieje... i jak poprawić kod, żeby komunikat z błędem zapisywał się pojedynczo?

Pozdrawiam
R.
404
Czy flaga a przy otwarciu pliku nie powoduje, że kolejne dane są dopisywane do poprzednich?
Remik37
Tak, zgadza się (plik docelowo ma przechowywać wszystkie błędy/ostrzeżenia wygenerowane w trakcie działania programu) - z tym, że przy pojedynczym uruchomieniu (kliknięciu w link) powinien być dopisany na końcu pliku txt pojedynczy wiersz z błędem. Tymczasem za każdym razem dopisują się dwa wiersze.
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.